Python开篇
本文更新中
1.引言
Python是一门弱类型编程语言,常用于数据分析,web开发,自动化测试和运维,爬虫,人工智能和机器人等领域
优点:
- 易学易用,开发简洁直观,快速实现想法
- 开发效率高,内置强大功能模块和包,社区活跃模块多
- 跨平台
- 能与底层语言高效协作计算,充当调度员
- 应用领域广,运维脚本,数据处理,科学计算,爬虫,web开发,人工智能机器学习
缺点:
- 运行速度慢,解释型语言
- 代码不能加密,知识产权和漏洞暴露,可通过手段变成可执行文件
- 内存消耗大
Python的发展史:
- 1991, Python 0.9.0发布
- 1994, Python 1.0发布,进入正式阶段
- 2000, Python 2.0发布
- 2008, Python 3.0发布,与2不兼容
- 2010, Python 2.7发布,2.x最后版本
- 2020.1, Python 2.x停止维护
- 2020.10, Python 3.9发布
- 2021, Python 3.10发布
- 2021, Python 3.11发布,平均性能提升10% - 60%
- 2023, Python 3.12发布,进一步优化性能和类型提示
- 2024, Python 3.13发布
- 2025, Python 3.14发布
2.安装与运行
3.语法
3.1 关键字
| 关键字 | 关键字 | 关键字 | 关键字 | 关键字 | 关键字 | 关键字 | 关键字 |
|---|---|---|---|---|---|---|---|
| False | None | True | and | as | assert | async | await |
| break | class | continue | def | del | elif | else | except |
| finally | for | from | global | if | import | in | is |
| lambda | nonlocal | not | or | pass | raise | return | try |
| while | with | yield |
可通过keyword标准库得到所有关键字
import keyword if __name__ == '__main__': print(keyword.kwlist)['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3.2 函数
关于Python函数语法,可见:Python的函数
Python系统库内置了很多能直接使用的内部函数,以下是Python3.13内置函数:
| 函数名 | 简要说明 | 函数名 | 简要说明 |
|---|---|---|---|
abs() |
返回一个数的绝对值 | aiter() |
返回异步迭代器对象 |
all() |
判断可迭代对象中是否所有元素为真 | anext() |
返回异步迭代器的下一个元素 |
any() |
判断可迭代对象中是否有元素为真 | ascii() |
返回对象的 ASCII 可打印表示 |
bin() |
将整数转换为二进制字符串 | bool() |
返回布尔值 True 或 False |
breakpoint() |
进入调试器 | bytearray() |
创建可变字节序列 |
bytes() |
创建不可变字节序列 | callable() |
判断对象是否可调用 |
chr() |
将 Unicode 码点转换为字符 | classmethod() |
将方法转换为类方法 |
compile() |
编译代码对象 | complex() |
创建复数 |
delattr() |
删除对象的属性 | dict() |
创建字典 |
dir() |
返回对象属性列表 | divmod() |
返回商和余数 |
enumerate() |
返回枚举对象 | eval() |
计算字符串形式的表达式 |
exec() |
执行编译后的代码字符串 | filter() |
用函数过滤可迭代对象 |
float() |
将数字或字符串转换为浮点数 | format() |
格式化值 |
frozenset() |
创建不可变集合 | getattr() |
获取对象属性 |
globals() |
返回全局变量字典 | hasattr() |
判断对象是否有指定属性 |
hash() |
返回对象的哈希值 | help() |
启动内置帮助系统 |
hex() |
将整数转换为十六进制字符串 | id() |
返回对象的唯一标识 |
input() |
读取用户输入 | int() |
转换为整数 |
isinstance() |
判断对象是否为指定类的实例 | issubclass() |
判断是否为子类 |
iter() |
返回迭代器对象 | len() |
返回长度 |
list() |
创建列表 | locals() |
返回局部变量字典 |
map() |
对可迭代对象应用函数 | max() |
返回最大值 |
memoryview() |
创建内存视图对象 | min() |
返回最小值 |
next() |
返回迭代器的下一个元素 | object() |
创建基础对象 |
oct() |
将整数转换为八进制字符串 | open() |
打开文件 |
ord() |
返回字符的 Unicode 码点 | pow() |
返回幂运算结果 |
print() |
打印对象 | property() |
创建属性描述符 |
range() |
生成整数序列 | repr() |
返回对象的可打印字符串表示 |
reversed() |
反转序列 | round() |
四舍五入 |
set() |
创建集合 | setattr() |
设置对象属性 |
slice() |
创建切片对象 | sorted() |
返回排序后的列表 |
staticmethod() |
将方法转换为静态方法 | str() |
转换为字符串 |
sum() |
求和 | super() |
调用父类方法 |
tuple() |
创建元组 | type() |
返回对象的类型 |
vars() |
返回对象的 __dict__ 属性 |
zip() |
聚合多个可迭代对象 |
__import__() |
动态导入模块 |
4.数据结构
Python内置了很多类似Java的数据结构,例如列表,字典等,还有独有的元组,python还支持使用推导式,迭代器和 生成器来简化对数据结构对象的操作,详细可见:Python的数据结构,推导式、迭代器和生成器
5.面向对象
Python同样支持面向对象,有类和对象的语法结构,支持类方法,类属性,支持继承,多继承,普通多态和特有的鸭子多态,详见:Python中的类和对象
6.进程,线程和协程
并发和并行
- 并发 一段时间内,CPU面对多任务,每个任务交替执行一段时间,对于某个瞬间,CPU只执行一个任务,通过高频的切换不同任务,每个任务都得到推进,仿佛在同时执行
- 并行 依赖于多个物理或逻辑的CPU,同一时刻每个核心执行不同的任务,对于某个瞬间,每个CPU都在执行不同的任务,通过多CPU同时工作的方式,让多个任务同时在执行
在现代操作系统和CPU中,并发和并行往往同时存在
import os
print(os.cpu_count())同步和异步
- 同步 发起一个任务后,需要等待该任务完成,才能继续执行后续任务,当前执行流程会被阻塞
- 异步 发起一个任务后,不必等待该任务完成(完成后仍可以通过特定方式获取结果),就能执行其他任务,执行流程不会被阻塞
CPU的核心数和运行速度,不会改变任务间的逻辑依赖关系,一堆任务之间被设定为同步关系,即使CPU核心再多,切换再快,也不会在一个任务没完成的情况下去启动另一任务
Python的进程,线程和协程
- 进程 进程是操作系统进行资源分配的基本单位,每个进程拥有一块独立的内存空间
- 线程 线程是进程内部的执行单元,一个进程可以含有不止一个线程,线程是操作系统进行CPU调度的基本单位,同一进程内的线程共享进程的资源
- 协程 协程(coroutine),又叫微线程或虚拟线程,是一种用户态的上下文切换技术,python中的协程,是通过一种可以被挂起,并且挂起后还能恢复执行的函数来实现的
7.异常
8.常用类库
9.工程化
包和模块是Python语言封装功能和组织程序集的解决方案,类似Java中的package和C#中的namespace,将固定功能模块的代码聚合在一起,提高程序的复用性和可维护性,详见:Python中的模块和包
环境,就是python解释器 + 依赖包。python虚拟环境的作用就是实现环境的隔离,允许你在不同项目中使用不同的包版本和python版本,隔离项目依赖,避免了包冲突,确保项目的一致性和可移植性,这里以默认的虚拟环境为例,详见:Python全局环境和虚拟环境(venv)
"如果文章对您有帮助,可以请作者喝杯咖啡吗?"
微信支付
支付宝
Python开篇
https://blog.liuzijian.com/post/python/