文章目录
Python基础类型总结
1. 数字类型 (Number)
- 整数 (int):无限精度整数
a = 10 b = -5 print(a + b) # 5
- 浮点数 (float):带小数点的数值
x = 3.14 y = 2.5 print(x * y) # 7.85
- 复数 (complex):形如
a + bj
c = 1 + 2j print(c.real) # 1.0 print(c.imag) # 2.0
- 布尔型 (bool):
True
或False
is_true = True is_false = False print(is_true and is_false) # False
2. 字符串 (str)
- 定义:单引号、双引号或三引号
s1 = 'Hello' s2 = "World" s3 = """多行 字符串"""
- 常用操作:
# 拼接 print(s1 + ' ' + s2) # Hello World # 格式化(f-strings) name = "Alice" age = 30 print(f"My name is {name}, age {age}") # My name is Alice, age 30 # 切片 print(s1[0:2]) # He # 替换 print(s1.replace('H', 'J')) # Jello
3. 列表 (list)
- 定义:用方括号
[]
包裹,元素可重复、可修改fruits = ['apple', 'banana', 'cherry']
- 常用操作:
# 增删改查 fruits.append('orange') # 添加元素 fruits.pop(1) # 删除索引1的元素 fruits[0] = 'grape' # 修改元素 print(fruits.index('cherry')) # 查找元素索引 # 列表推导式 squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
4. 元组 (tuple)
- 定义:用圆括号
()
包裹,元素不可修改point = (3, 4)
- 常用操作:
# 解包 x, y = point print(x, y) # 3 4 # 单元素元组(需逗号) single = (5,)
5. 字典 (dict)
- 定义:键值对
{key: value}
,键必须唯一person = {'name': 'Bob', 'age': 25}
- 常用操作:
# 增删改查 person['job'] = 'Engineer' # 添加键值对 del person['age'] # 删除键 print(person.get('name')) # Bob # 遍历 for key, value in person.items(): print(key, value)
6. 集合 (set)
- 定义:用花括号
{}
包裹,元素唯一、无序unique_numbers = {1, 2, 2, 3, 3} # {1, 2, 3}
- 常用操作:
# 集合运算 a = {1, 2, 3} b = {2, 3, 4} print(a.union(b)) # {1, 2, 3, 4} 并集 print(a.intersection(b)) # {2, 3} 交集
7. NoneType
- 定义:表示空值
result = None print(result is None) # True
总结
类型 | 定义方式 | 可变性 | 典型用途 |
---|---|---|---|
整数 | int() | 不可变 | 数值计算 |
字符串 | str() | 不可变 | 文本处理 |
列表 | list() | 可变 | 有序集合(可修改) |
元组 | tuple() | 不可变 | 有序集合(不可修改) |
字典 | dict() | 可变 | 键值对存储 |
集合 | set() | 可变 | 唯一元素集合 |
Python 常用内置方法
数学运算类
abs()
:返回一个数的绝对值。
print(abs(-5)) # 输出: 5
round()
:对数字进行四舍五入。
print(round(3.14159, 2)) # 输出: 3.14
pow()
:返回x
的y
次幂。
print(pow(2, 3)) # 输出: 8
序列操作类
len()
:返回对象的长度或元素个数。
my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # 输出: 5
max()
和min()
:分别返回可迭代对象中的最大值和最小值。
numbers = [3, 1, 4, 1, 5, 9]
print(max(numbers)) # 输出: 9
print(min(numbers)) # 输出: 1
sum()
:返回可迭代对象中所有元素的总和。
print(sum(numbers)) # 输出: 23
sorted()
:返回一个新的已排序列表。
print(sorted(numbers)) # 输出: [1, 1, 3, 4, 5, 9]
类型转换类
int()
:将一个对象转换为整数。
print(int(3.14)) # 输出: 3
float()
:将一个对象转换为浮点数。
print(float(5)) # 输出: 5.0
str()
:将一个对象转换为字符串。
print(str(123)) # 输出: '123'
list()
:将一个可迭代对象转换为列表。
my_tuple = (1, 2, 3)
print(list(my_tuple)) # 输出: [1, 2, 3]
tuple()
:将一个可迭代对象转换为元组。
print(tuple(my_list)) # 输出: (1, 2, 3, 4, 5)
dict()
:创建一个字典。
print(dict([('a', 1), ('b', 2)])) # 输出: {'a': 1, 'b': 2}
set()
:将一个可迭代对象转换为集合。
print(set(my_list)) # 输出: {1, 2, 3, 4, 5}
输入输出类
input()
:从标准输入读取一行文本。
name = input("请输入你的名字: ")
print(f"你好, {name}!")
print()
:将对象打印输出到标准输出。
print("Hello, World!")
其他类
type()
:返回对象的类型。
print(type(my_list)) # 输出: <class 'list'>
isinstance()
:判断对象是否是某个类的实例。
print(isinstance(my_list, list)) # 输出: True
help()
:启动内置的帮助系统。
# 运行下面代码会在控制台展示有关列表的帮助信息
help(list)
dir()
:返回对象的所有属性和方法。
print(dir(list)) # 输出列表对象的所有属性和方法
引用方式
1. Python 模块的引用方式
1.1 import
语句
使用 import
语句可以导入整个模块,之后可以通过模块名来访问其中的函数、类和变量。
import math
# 使用 math 模块中的 sqrt 函数
result = math.sqrt(16)
print(result)
1.2 from ... import ...
语句
可以从模块中导入特定的函数、类或变量,这样在使用时就不需要通过模块名来访问。
from math import sqrt
# 直接使用 sqrt 函数
result = sqrt(16)
print(result)
1.3 from ... import *
语句
导入模块中的所有内容,但这种方式不推荐,因为可能会导致命名冲突。
from math import *
result = sqrt(16)
print(result)
2. Python 内置模块
Python 有很多内置模块,以下是一些常用的内置模块:
math
:提供数学相关的函数,如三角函数、对数函数等。
import math
print(math.sin(math.pi / 2)) # 输出 1.0
random
:用于生成随机数。
import random
print(random.randint(1, 10)) # 输出 1 到 10 之间的随机整数
datetime
:处理日期和时间。
import datetime
now = datetime.datetime.now()
print(now)
os
:提供与操作系统交互的功能。
import os
print(os.getcwd()) # 输出当前工作目录
3. 下载和使用第三方模块
3.1 使用 pip
下载
pip
是 Python 的包管理工具,用于下载和管理第三方模块。要下载第三方模块,只需在命令行中运行以下命令:
pip install 模块名
3.2 实例:使用 requests
模块
requests
是一个常用的 HTTP 请求库,用于发送各种 HTTP 请求。
首先,在命令行中安装 requests
模块:
pip install requests
然后,在 Python 代码中使用它:
import requests
# 发送 GET 请求
response = requests.get('https://www.example.com')
# 打印响应状态码
print(response.status_code)
# 打印响应内容
print(response.text)
3.3 实例:使用 pandas
模块
pandas
是一个强大的数据处理和分析库。
安装 pandas
模块:
pip install pandas
在 Python 代码中使用:
import pandas as pd
# 创建一个简单的 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
这些示例展示了如何引用 Python 模块,以及如何下载和使用第三方模块。
技术细节
pip 应用的由来
pip
是 Python 的包管理工具,它的出现是为了解决 Python 项目中依赖管理的问题。在 pip
之前,Python 社区使用 easy_install
来安装第三方包,但 easy_install
存在一些不足,例如:
- 功能有限:
easy_install
缺乏对包的卸载和更新功能,也无法精确地指定依赖包的版本。 - 用户体验不佳:它在安装过程中输出的信息不够详细,遇到错误时难以排查问题。
为了改善这些情况,pip
应运而生。pip
于 2008 年发布,它借鉴了其他语言(如 Ruby 的 gem
)包管理工具的优点,提供了更加友好和强大的功能,包括安装、卸载、更新包,以及管理包的依赖关系等。如今,pip
已经成为 Python 社区中最常用的包管理工具。
安装 pip 以具备使用环境
1. Python 自带 pip
如果你使用的是 Python 2.7.9 及以上版本或者 Python 3.4 及以上版本,pip
通常会在安装 Python 时自动安装。你可以通过以下命令来检查 pip
是否已经安装:
pip --version
如果安装了 pip
,命令会输出 pip
的版本信息。
2. 手动安装 pip
如果你的 Python 版本没有自带 pip
,或者 pip
安装出现问题,可以通过以下步骤手动安装:
步骤 1:下载 get-pip.py
脚本
你可以从 Python 官方的 get-pip.py
脚本 下载该脚本。将其保存到本地,例如保存为 get-pip.py
。
步骤 2:运行脚本安装 pip
打开命令行终端,导航到保存 get-pip.py
文件的目录,然后运行以下命令:
python get-pip.py
在 Windows 系统中,如果同时安装了 Python 2 和 Python 3,可能需要明确指定使用 Python 3 来运行脚本,命令如下:
python3 get-pip.py
步骤 3:验证安装
安装完成后,再次使用以下命令验证 pip
是否安装成功:
pip --version
如果输出了 pip
的版本信息,说明 pip
已经成功安装。
3. 在虚拟环境中安装 pip
在实际开发中,为了避免不同项目之间的依赖冲突,通常会使用虚拟环境。venv
是 Python 标准库中自带的虚拟环境创建工具,以下是在虚拟环境中使用 pip
的步骤:
步骤 1:创建虚拟环境
python -m venv myenv
这里的 myenv
是虚拟环境的名称,你可以根据需要修改。
步骤 2:激活虚拟环境
- 在 Windows 系统中:
myenv\Scripts\activate
- 在 Linux 或 macOS 系统中:
source myenv/bin/activate
步骤 3:验证 pip
激活虚拟环境后,使用 pip --version
命令验证 pip
是否可用。在虚拟环境中,pip
安装的包只会影响该虚拟环境,不会影响系统全局的 Python 环境。
步骤 4:退出虚拟环境
当你完成开发工作后,可以使用以下命令退出虚拟环境:
deactivate
1. 真实环境与虚拟环境的区别
1.1 定义
-
真实环境(全局环境):
系统级的 Python 环境,所有用户安装的第三方包(通过pip install
)都会被安装到这里。不同项目共享同一套依赖,容易引发版本冲突。 -
虚拟环境(隔离环境):
通过工具(如venv
、conda
)创建的独立 Python 环境,拥有自己的解释器和包管理系统。每个项目可以有独立的依赖版本,互不干扰。
1.2 核心区别
特性 | 真实环境 | 虚拟环境 |
---|---|---|
依赖管理 | 全局共享,易冲突 | 独立隔离,版本可控 |
包安装位置 | 系统级目录(如 /usr/lib ) | 项目专属目录(如 myenv/ ) |
适用场景 | 系统工具或全局脚本 | 独立项目开发与部署 |
部署灵活性 | 需手动管理依赖版本 | 可直接迁移环境或依赖列表 |
2. 真实环境与虚拟环境在部署时的要求
2.1 真实环境部署要求
- 依赖管理:
需手动确保所有依赖包的版本与项目兼容,可能引发全局环境污染。 - 权限问题:
安装包需管理员权限(sudo
),可能导致安全风险。 - 适用场景:
仅适用于简单脚本或无版本冲突的小型项目。
2.2 虚拟环境部署要求
- 环境隔离:
在服务器上创建独立虚拟环境,避免与其他项目冲突。 - 依赖冻结:
使用pip freeze > requirements.txt
生成精确依赖列表,确保线上与开发环境一致。 - 轻量级部署:
无需安装系统级包,减少服务器资源占用。
3. 打包应用并部署到线上服务器的步骤
3.1 使用虚拟环境打包
-
冻结依赖:
在开发环境的虚拟环境中,生成requirements.txt
:pip freeze > requirements.txt
-
上传代码与依赖:
将项目代码、requirements.txt
和启动脚本上传到服务器。 -
创建线上虚拟环境:
在服务器上创建新虚拟环境并激活:python -m venv myenv source myenv/bin/activate # Linux/macOS myenv\Scripts\activate # Windows
-
安装依赖:
安装项目所需的所有包:pip install -r requirements.txt
-
配置环境变量:
通过.env
文件或服务器环境变量设置敏感信息(如数据库密码)。 -
启动服务:
使用gunicorn
、uvicorn
等服务器启动应用:gunicorn main:app --bind 0.0.0.0:8000
3.2 其他部署工具
-
Docker:
通过 Dockerfile 打包环境和依赖,生成镜像后部署到服务器:FROM python:3.9 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
-
Pipenv/Poetry:
使用Pipfile
或pyproject.toml
管理依赖,部署时通过工具安装:pipenv install --deploy --system poetry install --no-dev
4. 注意事项
- 避免依赖污染:线上环境应使用全新虚拟环境,避免残留旧包。
- 版本一致性:确保线上 Python 版本与开发环境一致(如 Python 3.9)。
- 安全加固:线上环境禁用
--user
安装,避免权限漏洞。 - 日志监控:配置日志记录和错误监控,便于排查问题。
通过虚拟环境和依赖冻结,可以高效、可靠地将 Python 应用部署到线上服务器。
小结
Python 开发的优势
1. 语法简洁易懂
Python 的语法简洁明了,代码可读性高,这使得开发者能够用较少的代码实现相同的功能。例如,实现一个简单的打印功能,Python 只需一行代码:
print("Hello, World!")
这种简洁的语法降低了学习门槛,提高了开发效率。
2. 丰富的标准库和第三方库
Python 拥有庞大的标准库,涵盖了文件操作、网络编程、数据处理等各个方面。同时,Python 社区也贡献了大量的第三方库,如用于数据科学的 NumPy
、pandas
,用于机器学习的 Scikit-learn
、TensorFlow
,用于 Web 开发的 Django
、Flask
等。这些库可以帮助开发者快速实现复杂的功能,无需从头开始编写代码。
3. 跨平台性
Python 可以在多种操作系统上运行,包括 Windows、Linux、macOS 等。这意味着开发者可以在不同的平台上进行开发和部署,而无需担心代码的兼容性问题。
4. 动态类型
Python 是一种动态类型语言,在编写代码时不需要显式地声明变量的类型。这使得代码更加灵活,编写起来更加便捷。例如:
x = 10
x = "Hello"
变量 x
可以先被赋值为整数,然后再被赋值为字符串。
5. 开源免费
Python 是开源软件,其源代码可以自由获取和修改。这不仅降低了开发成本,还促进了社区的发展和创新。
Python 开发的应用特点
1. 数据处理和分析
Python 在数据处理和分析领域表现出色。pandas
库提供了高效的数据结构和数据处理工具,NumPy
库则提供了强大的数值计算功能。结合 Matplotlib
和 Seaborn
等可视化库,Python 可以方便地进行数据清洗、分析和可视化。
2. 机器学习和人工智能
Python 是机器学习和人工智能领域最流行的编程语言之一。Scikit-learn
提供了丰富的机器学习算法和工具,TensorFlow
和 PyTorch
则是深度学习领域的主流框架。Python 的简洁语法和丰富的库使得开发者能够快速实现和实验各种机器学习和深度学习模型。
3. Web 开发
Python 有多个优秀的 Web 开发框架,如 Django
和 Flask
。Django
是一个功能强大的全栈框架,提供了内置的数据库管理、用户认证、模板引擎等功能,适合开发大型的 Web 应用。Flask
是一个轻量级的框架,灵活易用,适合快速开发小型的 Web 应用。
4. 自动化脚本
Python 可以用于编写各种自动化脚本,如文件处理脚本、系统管理脚本、网络爬虫等。通过编写脚本,可以提高工作效率,减少人工操作的错误。
5. 游戏开发
虽然 Python 不是游戏开发的主流语言,但也有一些游戏开发库,如 Pygame
。Pygame
提供了简单易用的游戏开发接口,可以帮助开发者快速创建 2D 游戏。
Python 开发的方向
1. 数据科学
数据科学方向主要涉及数据处理、数据分析、机器学习和深度学习等领域。从业者需要掌握 Python 的数据处理和分析库,以及机器学习和深度学习的算法和框架。
2. Web 开发
Web 开发方向可以分为前端开发和后端开发。Python 主要用于后端开发,开发者需要掌握 Python 的 Web 开发框架,如 Django
和 Flask
,以及数据库管理和服务器部署等知识。
3. 自动化测试
自动化测试方向主要负责编写自动化测试脚本,对软件进行功能测试、性能测试等。Python 可以用于编写各种自动化测试脚本,结合测试框架如 unittest
和 pytest
,可以提高测试效率和准确性。
4. 云计算和 DevOps
在云计算和 DevOps 领域,Python 可以用于编写自动化脚本,实现服务器的部署、配置和管理。同时,Python 也可以用于开发云原生应用,如容器编排工具 Kubernetes
的 Python 客户端库 kubernetes-client
。
5. 游戏开发
虽然 Python 在游戏开发领域的应用相对较少,但对于一些小型的 2D 游戏开发,Python 仍然是一个不错的选择。开发者需要掌握 Pygame
等游戏开发库的使用。