Python
编程范型 | |
---|---|
Python软件 | |
发行时间 | 1991 |
鸭子类型[7]、动态、 | |
Python软件 | |
.py、.pyi、.pyc、.pyd、.pyo(3.5 | |
www | |
CPython、PyPy、Stackless Python、MicroPython、CircuitPython、IronPython、Jython | |
衍生 | |
Cython、RPython | |
ABC[12]、ALGOL 68[13]、APL[14]、C[15]、C++[16]、CLU[17]、Dylan[18]、Haskell[19]、Icon[20]、Java[21]、Lisp[22]、Modula-3[16]、Perl[23]、Standard ML[14] | |
Boo、Cobra、CoffeeScript[24]、D、F#、GDScript[25]、Genie[26]、Go[27]、Groovy、JavaScript[28][29]、Julia[30]、Mojo[31]、Nim、Ruby[32]、Starlark[33]、Swift[34] | |
Python(
Python
Python
歷史
[编辑]Python
list
、dict
、str
lambda
、map
、filter
reduce
[51]。受Modula-3启发,Python 1.1
with
语句[60],并
2to3
实用
types.GenericAlias
)类型[68],并types.UnionType
)[71]。Python 3.11对官type
语句[73],并废弃或
特徵 與 設計 哲學
[编辑]Python
Python
Pythonmap
、filter
reduce
functools
itertools
,实现
Pythonimport this
優美 优于丑 陋。明瞭 优于隐晦。- 简单优于复杂。复杂优于
凌 乱 。 扁平 优于嵌套。稀 疏优于稠密 。可 读性很重要 。
Python
范羅
語法 和 语义
[编辑]Python
行 结构
[编辑]Python#
,并结
简单语句
縮 排
[编辑]Python语法
PythonINDENT
DEDENT
记号[94],二者的作用相当于C语言begin
end
。INDENT
记号,DEDENT
记号。
tab
关键字
[编辑]Python
|
|
|
|
|
|
|
True
、False
None
于Pythonnonlocal
async
await
match
、case
和 通 配 符 _
,介入 于版本 3.10,它们在 与 模 式 匹 配 语句有 关的上下 文中 ,可 以在语法上 充当 关键字 ;但 是 这种区分 只 在 语法解析 器 层次进行,并非在 词法分析 记号化 层次。type
,介入 于版本 3.12,它用在 type
语句之 中 。
标识符
[编辑]标识A
Z
a
z
,_
以及0
9
,
_spam
(单下划线开头):弱 “内部 使用 ”标识。对于from M import *
,将 不 导入所有 以下 划线开头的 对象。spam_
(单下划线结尾):为了避免与 python关键字 的 命名 冲突。__spam
(双 下 划线开头):在 命名 一 个类特性 的 时候,采 用 名字 修 饰,比 如在类SpamEggs
内 ,__spam
将 变成_SpamEggs__spam
[104]。__spam__
(双 下 划线开头双 下 划线结尾):指 那 些包含在用 户控制 的 命名 空 间中 的 “魔 术”方法 或 特性 ,比 如__delattr__
、__dir__
、__doc__
、__getattribute__
、__init__
、__new__
、__repr__
、__setattr__
、__sizeof__
等 。建 议永远不要 将 这样的 命名 方式 应用于自己 的 变量或 函数 。
語句
[编辑]Python
- 赋值语句,
采 用 的 中 缀记号是 等号 =
。赋值语句被 用 来 将 名字 绑定(含重新 绑定)到 值,以及用 来 修 改 可 变对象 的 特性 或 项目。 表 达式语句,用 来 交互 式 的 计算并写出 一 个值,或 者 用 来 调用一 个过程 (即 返 回 无含义结果 的 函数 ),在 Python中 过程返 回 值None
。global
语句,是 在 整 个当前代 码块中 成立 的 声明 ,它意味 着 随 后 列 出 的 标识符 被 解 释为全局 变量。nonlocal
语句,导致随 后 列 出 的 标识符 ,提 及在除 了 全局 作用 域 之 外的 最近 包 围作用 域 中 的 先 前 绑定变量。type
语句,介入 于版本 3.12,声明 作 为类型别名类型(typing.TypeAliasType
)的 实例的 一 个类型 别名。pass
語句 ,充当 NOP,表示 此行為 空 ,不 執行 任 何 操作 。assert
語句 ,用 於程式 調 適 階段 時 測 試 執行 條件 是 否 滿足 。continue
语句,越 过这次 迭代并继续进行 下 个项目 。break
语句,从循环中跳 出 。return
语句,用 来 从函数 返 回 值。当 函数 执行到 return
语句时,它会停止 执行并将指定 的 值返回 给调用 者 。raise
语句,抛 出 一 个例外 。yield
语句,使用 它从一 个生成 器 中 返 回 一 个值。在 版本 2.5之 前 ,信 息 只 能 单向的 从生成 器 传递出来 。[c]import
语句,导入一个模块或包,它组合 了 两种操作 ,查找指名 的 模 块,接着 将 找到的 结果绑定到 在 局部 作用 域 中 的 名字 。导入语句有 三 种形式 (下 述 语句样本中 的 方 括 号 表示 其中内容 为可选的):del
语句,递归的 进行删除。
复合语句:
if
語句 ,當 條件 成立 時 執行 語句 套件。它經常 包含 elif
、else
子 句 。while
語句 ,當 條件 為真 時 ,重複 執行 語句 套件。for
語句 ,遍 历列表 、字 符 串 、字典 、集合 等 迭代器 ,依 次 處理 迭代器 中 的 每 個 元素 。match
语句,用 于模 式 匹 配 。try
語句 ,它经常 包含 except
、else
、finally
子 句 ,處理 在 程 式 執行 中出 现的異常 情況 。Python支持 并广泛使用 例外 处理,作 为检测错误状况和程 序 中 其他“例外 ”事件 的 方式 ,并提倡在可能 出 现错误状况的任 何 时候都 使用 例外 。习惯上 访问一个文件或资源不在使用之前进行测试,而是先行 尝试使用 它,再 捕 获访问被拒 绝引发的例外 。[e]Python 3.11介入 了 except*
子 句 [116]。with
語句 ,把 一块代码包裹在一个上下文管理器之内。它允许了资源获取即 初 始 化 (RAII)式 行 为,可 替 代 常 见的try
/finally
惯用法 。Python使用 with
语句处理资源[117],在 进入一个作用域的时候调用一个函数,而在离开它的时候调用另一个函数 ,例 如:在 一块代码执行之前获取一个锁,并且在 此后释放这个锁;或 事 先 打 开一个文 件 ,并且事 后 关闭它。[f]class
語句 ,是 定 义类的 可 执行语句。类的继承列 表 给出基 础类列 表 ,没 有 继承列 表 的 类,缺 省 继承基 础类object
。类的套件接着 在 新 的 执行框 架 (frame)中 执行,它使用 新建 的 局部 名字 空 间和 原 来 的 全局 名字 空 间。当 这个类套件 完成 执行之 时,丢弃它的执行框 架 并保存 它的局部 名字 空 间。一个类对象接着被创建,其基础类采 用 继承列 表 ,其特性 字典 采 用 保存 的 局部 名字 空 间。类名字 接着 在原 来 的 局部 名字 空 间中,被 绑定到 这个类对象 。def
語句 ,是 定義 函數 和 方法 的 可 执行语句。它的执行在 当 前 局部 名字 空 间中 ,将 函数 名字 绑定到 一 个函数 对象(对函数 的 可 执行代 码的包装 器 )。这个函数 对象包含 到 当 前 全局 名字 空 间的引用 ,作 为调用 这个函数 时使用 的 全局 名字 空 间。async def
语句,用 于协程函数 定 义。await
表 达式、async for
语句和 async with
语句,只 能 用 在 协程函数 的 主体 中 。[g]
块与模 块
[编辑]Pythoneval()
exec()
执行
builtins
.py
;__name__
__path__
sys
(builtins
(None
)__main__
__main__
__main__
顶层__main__
-m
__main__
)__name__
变量"__main__"
,
nonlocal
global
。如果一个名字绑定在模块层次,它是
vars()
__dict__
globals()
locals()
locals()
locals()
globals()
dir()
for
语句头部as
关键as
关键import
语句、with
语句、except
except*
as
如果一个名字绑定在一个块中,并且global
语句global
语句global
语句,这个nonlocal
语句导致其列
表 达式
[编辑]Python
在 Python中 ,算 术运算的 加法 +
、减法-
、乘法 *
和 取 模 %
是 与 C语言和 java相 同 的 ,但 是 除法 的 行 为不同 。在 Python中有 两种除法 ,它们是 下取 整 除法 (或 整数 除法 )//
和 浮点除法 /
。Python增加 了 指数 算 符 **
。自 从Python 3.5,介入 了 矩 阵乘法 算 符 @
[122],它已经用于了NumPy库[123]。
在 Python中 ,有 如下必须用 于整数 的 位 运算:&
与 (AND),|
或 (OR),~
非 (NOT),^
异或(XOR),>>
右 移 ,<<
左 移 。
在 Python中 ,有 如下比 较运算:大 于>
,小 于<
,等 于==
,不等 于!=
,小 于等于<=
,大 于等于>=
。==
按值比 较。Python的 is
、is not
算 符 可 以用来 比 较对象 的 同一 性 (按引用 比 较),也就是 比 较两个变量 是 否 引用 了 同 一 个对象 。而in
、not in
用 于判断 一个对象是否属于另外一个对象。在 Python中 ,比 较是可 以链接 起 来 的 [124],比 如a < b < c
。
在 Python中 ,由 逗号,
分 隔 的 一 组表达式,叫 做表达式列 表 。Python为构造 列 表 、字典 或 集合 ,提供 了 叫 做“显示”的 特殊 语法,它们每 个都有 两种方式 :包容 内容 要 么显式 列 举出来 ;要 么通过一组循环和过滤指令计算而来,这叫做“推导式 ”。列 表 显示是 包 围在方 括 号 中 的 可 以为空 的 一 系列 表 达式,一个例子列表可写为[1,2,3]
。字典 显示是 包 围在花 括 号 中 的 可能 为空的 一 系列 的 键/数 据 项对。集合 显示用 花 括 号 来 指示 ,与 字典 显示的 区 别是缺 少 分 隔 键与值的分 号 [125]。自 从Python 3.5,增加 了 在 表 达式列 表 中 的 “可 迭代解 包 ”*
,和 在 字典 显示中 的 “字典 解 包 ”**
[126]。[k]
在 Python中 ,加 圆括号 形式 (parenthesized form),是 包 围在圆括号 中 的 一个可选表达式列表。加 圆括号 的 表 达式列 表 产生的 东西,就是这个表 达式列 表 所 产生的 :如果这个列 表 包含 至 少 一 个逗号 ,它产生 一 个元组;否 则它产生构成这个表 达式列 表 的 那 个单一 表 达式[128]。一个例子元组可写为(1,2,3)
。元 组不是 圆括号 形成 的 ,而是使用 逗号形成 的 ,在 没 有 歧义的 情 况下,元 组的圆括号 是 可 选的。空 的 圆括号 对产生 空 元 组对象 。使用 序列 串 接 算 符 +
来 串 接 二 个元组,产生包含 给定元 组二者的元素的一个新元组。
- Python
支持 在 序列 对象(比 如字符 串 、元 组或列 表 )上 的 下 标(subscription)表 达式:a[
,索引 ]和 分 片 表 达式:a[开始:
停止 ]或 a[开始:
。停止 :步 长]下 标索引是基 于零的 ,负数是 相 对于结尾的 。分 片 范围自 从“开始”索引 ,直 到 但 不 包括 “停止 ”索引 。分 片 的 第 三个参数叫做“步 长”(step)或 “间隔”(stride),允 许元素 被 跳 过和用 负数指示 反 向 。分 片 索引 可 以省略 ,例 如a[:]
,这返回 整 个列表 的 一 个复本 。[o]分 片 的 每 个元素 都 是 浅 层复制 的 。
- Python
的 条件 表 达式表示 为x if c else y
。意思 是 当 c
为真时,表 达式的 值为x
,否 则表达式的 值为y
。在 运算元 的 次序 上 不同 于很多 其他语言中 常 见的c ? x : y
。
自 从Python 3.8,介入 了 赋值表 达式,其记号 是 :=
[66]。它将一个表达式赋值给一个标识符,同 时还返 回 这个表 达式的 值。赋值表 达式在 用作 子 表 达式,即位 于分片 表 达式、条件 表 达式、lambda
表 达式、关键字 参 数 中 的 表 达式和 推导式 中 的 if
表 达式之 中 ,以及在 assert
和 with
语句之 中 的 时候,必须围绕着 圆括号 。在 它们可 以使用 的 所有 其他地方 ,包括 在 if
和 while
语句之 中 ,都 不 要求 圆括号 [129]。
Python
运算 |
描述 |
---|---|
( ,[ ,{键: 值...} ,{ |
|
x[ ,x[ ,x( ,x. |
|
await x |
await |
** |
|
+x ,-x ,~x |
|
* ,@ ,/ ,// ,% |
|
+ ,- |
|
<< ,>> |
|
& |
逐位AND |
^ |
逐位XOR |
| |
逐位OR |
in ,not in ,is ,is not ,< ,<= ,> ,>= ,!= ,== |
|
not x |
|
and |
|
or |
|
if – else |
|
lambda |
lambda |
:= |
赋值 |
Python+
*
[131]。|
|=
[132]。
Pythonstr
bytes
bytearray
。%
:
短 字 符 串 文字 ,由 单引号 '
或 双 引号"
界 定 。不同 于Unix shell、Perl和 受Perl影 响的语言,单引号 和 双 引号功 能 相 同 。这二种字符串都使用反斜杠\
作 为转义字 符 。
字 符 串 文字 或 字 节文字 都 可 选的能 前 缀上一 个r
或 R
,这叫做原始 字 符 串 。转义序列 不 被 解 释,因 此在文字 反 斜 杠 常 见的地方 很有用 ,比 如正 则表达式和 Windows风格的 路 径 。[r]这种引述可 比 较于C#中 的 “@
引述”。
- Python
中 的 “字 符 串 格式 ”算 符 %
,在 功 能 上 类同于C语言中 的 printf
格式 化 字 符 串 [134],例 如"spam=%s eggs=%04d" % ("blah", 2)
,求 值为'spam=blah eggs=0002'
。自 从Python 3.0,str
类提供 了 可 供 替 代 的 format()
方法 [135],例 如"spam={0} eggs={1:04d}".format("blah", 2)
。在 Python 3.6中 ,提供 了 “格式 化 字 符 串 文字 ”或 称 为“f字 符 串 ”,它向字 符 串 文字 前 缀上f
或 F
[136],这是一 种字 符 串 插值[137],例 如x="blah"; y=2; f'spam={x} eggs={y:04d}'
。[t]
for
循环;if
语句;eval()
exec()
,
语句a = 1
,==
误写为赋值算=
,这不
函数
[编辑]Python
Pythonparam=value
样式进行
Python
Pythonkwarg=value
样式/
*
,
*args
**kwargs
这样*
args
tuple
类型,对应**
kwargs
dict
类型,对应*
**
@
为了help()
,
对象及其方法
[编辑]Python
Python
对象instance.method(arguments)
,Class.method(instance, arguments)
self
self
this
关键self
Pythonsuper()
super().method
,self.method
__
开始__add__()
,+
__get__()
、__set__()
、__delete__()
Python@classmethod
@staticmethod
self
property
类型
[编辑]Pythontype
Python
Python
0
长度−1
),并且
__dict__
|
、交集&
、-
、对称^
,<=
、<
、>=
、>
。set
frozenset
。
Pythontype
type
type
object
,object
继承,并且type
长期规划
类型 | 描述 | 语法 | |
---|---|---|---|
bool
|
False True numbers.Integral 0 1 ,"False" "True" |
True False
| |
int
|
42
| ||
float
|
1.414
| ||
complex
|
3+2.7j
| ||
range
|
for 循环 |
range(1, 10) range(10, -5, -2)
| |
str
|
U+0000..U+10FFFF char 类型,这些1 |
'Wikipedia'
"Wikipedia"
"""Spanning
multiple lines"""
| |
bytes
|
0 <= x < 256 |
b'Some ASCII' b"Some ASCII" bytes([0x53, 0x74, 0x72])
| |
bytearray
|
bytearray(b'Some ASCII') bytearray(b"Some ASCII") bytearray([0x53, 0x74, 0x72])
| ||
list
|
[4.0, 'string', True] []
| ||
tuple
|
(4.0, 'string', True) ('single element',) ()
| ||
dict
|
键-值对 |
{'key1': 1.0, 3: False} {}
| |
set
|
无序 |
{4.0, 'string', True} set()
| |
frozenset
|
frozenset([4.0, 'string', True])
| ||
types.EllipsisType
|
这个类型... Ellipsis |
... Ellipsis
| |
types.NoneType
|
这个类型None Null |
None
| |
types.NotImplementedType
|
这个类型NotImplemented |
NotImplemented
|
算 术运算
[编辑]Python+
、-
、*
、/
%
。它还//
、**
@
[122]。二元运算先将两运算元转为共同类型,5**3 == 125
而9**0.5 == 3.0
。这些+
、-
,还可以分别
/
/
总是产生浮点5/2 == 2.5
;而在//
7//3 == 2
而7.5//3 == 2.0
。
//
(a + n)//n == a//n + 1
总是为真。%
-4%3 == 2
而4%-3 == -2
。其它a == (a//n)*n + a%n
对于a
n
Pythonround()
round(1.5)
round(2.5)
2
。
Pythona < b < c
,测试a < b and b < c
[124]。C语言(a < b) < c
:a < b
,其结0
1
,c
[165]。
Python对decimal
Decimal
类[166],fractions
Fraction
类,
abs()
math
cmath
标准库
[编辑]Python拥有一个强大的标准库[172]。Python标准库
程 序 代 码实例
[编辑]一個在標準輸出設備上輸出Hello Worldprogram01.py
,python3 program01.py
:
print("Hello, world!")
Python也可以單>>>
print("Hello, world!")
,按Enter
>>> print('Hello, world!')
Hello, world!
计算
n = int(input('輸入 一 個 數 ,就會印 出 其階乘 : '))
if n < 0:
raise ValueError('錯誤 ,請輸入 一 個 非負 整數 ')
fact = 1
for i in range(2, n + 1):
fact *= i
print(fact)
print
print
实现
[编辑]Python
活 跃开发的实现
- CPython:
官 方 的 直譯 器 ,需要 区 别于其他直譯 器 的 时候才 以CPython称呼 。CPython默 认采用 全局 解 释器锁(GIL),以确保 在任 何 时刻只 有 一 个线程执行Python字 节码;一些扩展模块被设计为在进行计算密集 任 务时释放GIL,还有在 进行I/O时总是 释放GIL[177]。 - PyPy:
用 RPython编写的 Python实现,兼 容 至 CPython版本 3.10和 2.7,它采用 了 跟踪JIT,缺 省 支持 stackless模 态。 - MicroPython:为
微 控 制 器 而优化 的 Python 3变体,它实现了完 整 的 Python 3.4语法,和 补充自 版本 3.5的 async/await
关键字 ,和 后 来 版本 的 一些选定特征;它提供 了 实现Python标准库模块功能子 集 的 内 建 模 块,和 特定 于微控 制 器 的 一 些模块。CircuitPython是 Adafruit开发的 MicroPython分 叉 。 - Codon:
使用 了 LLVM的 高性能 Python编译器 [178],它将Python代 码编译成本 机 机 器 代 码,不 带有任 何 运行时开销并且支持 本 机 多 线程,它的语义在 数 据 类型等 方面 上 与 CPython有 所 不同 [179],它由MIT CSAIL的 研究 人 员开发[180]。 - Pyodide:
基 于WebAssembly/Emscripten的 用 于浏览器 和 Node.js的 Python发布[181],支持 任 何 在 PyPI上 wheel
形式 的 纯Python包 ,并且已 经移植 了 很多具有 C语言扩展的 包 。 - RustPython:
用 Rust编写的 Python解 释器[182],它可以嵌入 到 Rust应用程 序 中 从而将 Python用作 脚本 语言,还可以被编译成 WebAssembly从而在 浏览器 中 运行Python代 码。 - Brython:
用 JavaScript编写的 在 浏览器 中 运行的 Python实现[183],具有 到 DOM元素 和 事件 的 接 口 。
到 其他语言的 交叉 编译器
- Cython:优化
静 态编译器 ,将 Python超 集 编译成 C语言或 C++。Cython补充支持 调用C语言函数 并且在 变量和 类特性 上 声明 C语言类型,还支持 以OpenMP为后端 的 本 机 多 线程并行[184]。 - Numba:
使用 LLVM的 JIT编译器 ,将 包括 很多NumPy函数 的 聚焦数 值计算 的 Python子 集 ,翻 译成快速 的 机 器 码,它为在 CPU和 GPU上 并行化 Python代 码提供 了 大量 选项。 - mypyc:
将 Python模 块编译成C扩展的 编译器 [185],它使用 标准的 Python类型提示 生成 快速 代 码。mypyc是 mypy发行的 可 选依赖,它使用 mypy进行类型检查和 类型推论[155]。 - Pythran:
将 聚焦于科学 计算的 Python子 集 编译成 C++11的 提 前 编译器 [186],它依赖于Boost和 xsimd库,将 标注了 接 口 描述的 Python模 块编译为本 机 共 享 库模 块,能 利 于上多核 和 SIMD指令 单元。 - Nuitka:
用 Python编写的 到 C11(或 替 补为C++03)的 优化编译器 [187],它依赖于CPython的 libpython
库,能 完成 嵌入 所有 模 块的程 序 编译、扩展模 块及包 编译和 独立 模 态程序 发布。 - Transcrypt:
用 Python编写的 Python 3.9到 JavaScript编译器 [188],用 于在浏览器 中 运行Python代 码,它被预先编译为高可 读性且高效 的 JavaScript代 码。 - MyHDL:
将 Python编译成 Verilog或 VHDL[189]。
其他实现举例:Jython,它是
开发环境
[编辑]通用 文 本 编辑器
[编辑]很多并非
专用开发环境
[编辑]适用于Python
- IDLE:Python“标准”IDE,
一般 随 Python而安装 ,支持 较少的 编辑功 能 ,调试功 能 也比较弱。 - Eric:
基 于PyQt的 自由 的 IDE,支持 自 动补全 、智能 感知 、自 动语法 检查、工程 管理 、svn/mercurial集成 、自 动单元 测试等 功 能 ,具有 可 扩展的 插件系 统,通 过可选插件 支持 Git集成 。调试功 能 与 Visual Studio和 Eclipse类似。 - Spyder:开源
的 跨 平台 科学 计算IDE。 - PyScripter:
功 能 较全的 开源IDE,使用 Delphi开发。 - PyCharm:
由 JetBrains公司 出品 ,具 备一般 IDE的 功 能 ,比 如调试、语法高 亮 、Project管理 、代 码跳转、智能 提示 、自 动完成 、单元测试、版本 控 制 等 等 ,另外,它还提供 了 一些功能用于Django开发,同 时支持 Google App Engine,还支持 IronPython。它是商 业软件 ,但 也具有 社 区 版 和 教育 版 。 - Thonny:适用于编
程 初 学者 的 IDE。 - Wing IDE:
商 业软件 ,有 免 費 的 功 能 有限 的 Wing 101。
第 三 方 扩展包
[编辑]Python
Python
網 絡 服 务
[编辑]Python
Python
- Django:MTV
架 构[197]的 Web开发框 架 ,注 重 组件的 重用 性 和 “可 插拔性 ”、快速 开发和 DRY法 则。 - Pyramid:极简
主 义的Web框 架 ,不 预定持久 化 方式 。 - Flask:
微 Web框 架 ,不 要求 特定 的 工具 或 库。 - PyScript:创建
在 浏览器 内的 Python应用的 框 架 [198],这些应用能 使用 HTML界面 和 已 编译成 WebAssembly的 Pyodide或 MicroPython,以及当代 Web技 术。 - Twisted:
事件 驱动的 网络编程框 架 。它支援 多數 標準 的 網 路 協定 (包含 客 户端和 伺服器 ),並 且提供 了 多種 工具 ,適用 於編寫 高性能 的 伺服器 軟體。 - Requests:适合于常
人 使用 的 HTTP库,封 装 了 许多繁 琐的HTTP功 能 ,极大地 简化了 HTTP请求所 需要 的 代 码量。 - Beautiful Soup:
用 来 解析 HTML/XML的 一个简单易用Python包 。 - uvloop:
是 对内建 asyncio
事件 循环的 快速 的 、直截 了 当 的 替 代 者 [199],它用Cython实现并在底 层使用 了 libuv。 - aiohttp:
基 于asyncio
的 HTTP客 户端和服 务器二 者 [200]。
图形用 户界面
[编辑]Python
- PyQt:Qt
的 Python绑定库,由 Riverbank Computing公司 自 从1998年 发行,采 用 GPL许可证或商 业许可 证。 - PySide:Qt
的 Python绑定库,由 Qt公司 自 从2009年 发行,采 用 LGPL许可证。 - PyGObject:
替 代 了 PyGTK,它是为Python程 序 访问基 于GObject的 库而提供 的 包装 库[201],GObject是 GTK、GIO和 GStreamer等 库使用 的 对象系 统。 - Kivy:
用 于开发多点 触 控 应用软件的 开源Python库,采 用 了 自然 用 户界面 (NUI)。 - WxPython:GUI编程
框 架 wxWidgets的 Python包装 库,它与MFC的 架 构相似 。 - PySimpleGUI:
将 Tkinter、Qt、WxPython和 Remi[202]的 GUI框 架 变换成 简单的 接 口 [203]。 - Gooey:
将 几乎所有 Python 3控 制 台 程 序 用 一行代码转变成GUI应用[204]。 - Dear PyGui:
快速 而强力 的 具有 极小依 赖性的 GUI工具 箱 [205]。 - pywebview:轻量级跨
平台 的 对WebView构件的 包装 器 ,允 许在其本地 GUI窗 口中 显示HTML内容 [206]。
数 据 科学
[编辑]- NumPy:Python
的 基 础性的 科学 计算软件库,它提供 了 强力 的 多 维阵列对象,广播式 阵列运算[207],集成 C/C++和 Fortran代 码的工具 ,较为有用 的 线性代数 、傅 里 叶 变换和 随 机 数 功 能 。 - SciPy:
用 于数学 、科学 和 工程 的 Python软件库,它以NumPy的 多 维阵列作 为基本数 据 结构,所 包含 的 模 块针对了:统计、最 优化、数 值积分 、常微分 方 程 求 解 、插值、线性代数 、傅 里 叶 变换、信号 处理、图像处理等 。 - CuPy:NumPy/SciPy
兼 容 的 GPU加速 的 阵列库[208],它可在 NVIDIA CUDA或 AMD ROCm平台 上 充当 其直截了当 的 替 代 者 ,来 运行现存的 NumPy/SciPy代 码。 - matplotlib:
基 于NumPy的 综合性 绘图库,用 于创建 静 态的、动画的 和 交互 式 的 数 据 可 视化。 - pandas:
用 于数 据 分析 和 数 据 操 纵的 软件库,它建造 在 NumPy基 础上,提供 了 加 标签数 据 结构“数 据 帧”[209],和 统计函数 等 。它的缺 省 绘图后 端 是 matplotlib,还可以扩展 上 第 三 方 绘图后 端 [210]。 - Dask:
伸 缩范围从笔记本 电脑至 计算机 集 群 的 并行计算库[211],它提供 的 用 户接口 镜像了 PyData生 态系统中pandas、scikit-learn和 NumPy的 API。
数 据 可 视化
[编辑]- VisPy:
高性能 交互 式 2D/3D数 据 可 视化库[213],它通过多种后端 OpenGL库之一来显示非常大的数 据 集 ,并提供 叫 做gloo的 受用 NumPy的 Python风格OpenGL ES 2.0接 口 。 - glumpy:
用 于科学 数 据 可 视化的 快速 、可 伸 缩的Python库[214],它基于了NumPy和 OpenGL绑定库PyOpenGL。 - seaborn:
基 于matplotlib的 数 据 可 视化库[215],它提供 了 绘制统计图形的 高 层接口 。 - Vega-Altair:
建造 在 Vega-Lite JSON规定之 上 的 声明 式 统计可 视化库[216]。 - Bokeh:针对现代Web浏览
器 的 交互 式 数 据 可 视化库[217],它在大型 或 流 式 的 数 据 集 上 提供 高 效 的 交互 性 。 - plotly:
交互 式 开源的 基 于浏览器的 图形绘制库[218],它是建造 在 plotly.js之 上 的 声明 式 图表库。 - Dash:
数 据 应用和 仪表板 框 架 ,它可将 现代用 户界面 元素 如下 拉 选单、滑 动条和 图形,直接 连结至 分析 型 Python代 码[219],它由Plotly公司 出品 ,基 于了React、Flask和 plotly.js[220]。 - Panel:
数 据 探索 和 Web应用框 架 ,它能无缝的 集成 于PyData生 态系统,提供 交互 式 数 据 表 格和 可 视化等 功 能 [221],它是HoloViz生 态系统的成 员[222],这个工具 组还包括 了 :hvPlot、HoloViews、GeoViews、Datashader、Lumen、Param和 Colorcet。 - Streamlit:
迅速 将 Python脚本 转变为可共 享 Web应用的 框 架 [223]。 - Voilà:
将 Jupyter Notebook转变为独立 的 Web应用的 框 架 [224]。
机 器 学 习
[编辑]- scikit-learn:
机 器 学 习软件库,它提供 的 功 能 包括 :监督学 习中 的 分 类和 回 归,无监督 学 习中 的 聚类和 降 维,还有模型 选择和 数 据 预处理 。它基于了NumPy、SciPy、轻量级管 道 库Joblib[225]和 线程池 控 制 库threadpoolctl[226],其绘图功能 依 赖于matplotlib,还用到 了 scikit-image、seaborn和 plotly。 - PyMC:
基 于从Theano分 叉 出 的 PyTensor的 概 率 编程库,它用于建立 贝叶斯统计模型 ,并使用 马尔可 夫 链蒙特 卡洛(MCMC)方法 进行模型 拟合。 - TensorFlow:Google开发
的 “端 到 端 ”开源机 器 学 习平台 ,它提供 了 Python API[227],其中实现了 Keras API[228]。Keras现在是 在 TensorFlow 2上 建立 的 深度 学 习高 层API。 - PyTorch:Meta
在 Torch基 础上开发的 开源的 Python软件包 ,提供 了 具有 强大 的 GPU加速 的 张量计算,和 建立 在 基 于tape的 自 动微分 系 统上的 深度 神 经网络。 - JAX:Google开发
的 开源机 器 学 习框 架 ,其核心 是 可 任意 组合的 对数值纯函数 的 变换[229],它结合 了 修 改版 本 的 针对NumPy的 自 动微分 库Autograd[230],和 TensorFlow中 的 加速 线性代数 库XLA[231],它使用 XLA来 在 GPU和 TPU上 编译和 运行NumPy程 序 。
其它种类
[编辑]- pegen:Python
的 PEG解析 器 生成 器 [232]。 - PeachPy:
采 用 高 层Python的 可 移植 高 效 x86-64汇编代 码生成 器 [233]。 - llvmlite:轻量级的LLVM
的 Python绑定,用 于编写 即 时编译器[234]。 - SymPy:
支持 数学 符号 运算的 软件库,用 于提供 计算机 代数 系 统。 - SimPy:
基 于由Python生成 器 函数 定 义的进程的 离散事件 模 拟框 架 [235]。 - ModernGL:
不同 于PyOpenGL[236],ModernGL是 在 OpenGL 3.3+核心 上 的 Python包装 器 [237],它简化 了 简单图形应用如科学 模 拟、游 戏和用 户界面 的 创建。 - PyCUDA:
不同 于Nvidia的 cuda-python[238],PyCUDA提供 对CUDA API的 Python风格访问[239]。 - PyOpenCL:PyOpenCL
提供 对OpenCL API的 Python风格访问[240],例 如光 滑 粒子 流体 动力学 框 架 PySPH的 性能 关键部 份用Cython和 PyOpenCL实现[241]。 - Kompute:
通用 Vulkan计算框 架 ,针对C++和 Python[242]。 - Taichi:
采 用 同 Python几乎一 样语法的 指令 式 并行编程语言[243],它嵌入 在 Python之 中 并使用 即 时编译器框 架 如LLVM,将 计算密集 的 Python代 码转变成本 机 GPU或 CPU指令 。 - SQLAlchemy:Python
的 SQL工具 包 和 采 用 数 据 映 射 器 模 式 的 对象关系映 射 器 (ORM)。 - Graphene:GraphQL
框 架 [244],支持 各 种数据 源 如SQLAlchemy、Mongo、Django和 定 制 Python对象等 。GQL是 常用 来 与 之 配合 的 GraphQL客 户端Python库[245]。 - Pillow:
是 基 于Python的 图像处理软件库[246],它支持 广泛的 图形文 件 格式 ,分 叉 于已终止的 PIL。 - pypdf:
能 够分割 、合 并、修 剪和转变PDF文 件 的 Python软件库[247]。 - PyFilesystem2:Python
的 文 件 系 统抽象 层[248],将 在 归档、内 存 和 云 端 存 储等之 中 的 文 件 和 目 录,像 在 本地 驱动器 中 一样容易的处置。 - Fabric:经由SSH远程执行shell
命令 的 高 层库[249],它产生 有用 的 Python对象作 为回馈。 - Prefect:现代
工作 流 程 编排框 架 [250],它易于建造 、调度和 监控健 壮 的 数 据 流水 线。 - pygame:开发视频
游 戏的 Python软件库,基 于了SDL软件库[251]。视觉小 说引擎Ren'Py建造 在 pygame之 上 。 - pyglet:Python编写
的 面 向 对象的 游 戏和多 媒体 库,利用 了 FFmpeg软件库并需要 OpenGL 3.3+。2D街 机 游 戏开发库Arcade基 于了pyglet[252],它还利用 了 建造 在 2D物理 引擎Chipmunk之 上 的 Pymunk[253]。 - Panda3D:开源
游 戏引擎,包括 了 图形、音 频、I/O、碰撞侦测和 其他与 3D游 戏有关的功 能 ,使用 Python作 为游戏开发语言 [254]。 - pythonnet:
可 以近乎无缝的集成 .NET通用 语言运行库(CLR)的 程 序 包 [255]。 - PyInstaller:
将 Python应用和 它的依 赖项捆绑成 一 个单一 的 包 [256],从而不 需要 安 装 Python解 释器或 任 何 模 块就可 以运行 应用。
应用
[编辑]雖然Python
应用程 序
[编辑]- IPython:以多种编
程 语言进行交互 式 计算的 命令 shell和 Jupyter的 内 核 ,最初 为Python开发,它提供 了 内省 、富 媒体 、shell语法、tab补全和 历史。 - Conda:
跨 平台 的 、语言无关的 二 进制包 管理 器 ,它被Anaconda发行采 用 。 - SCons:软件
建造 工具 ,它可代替 make构建编译程 序 。 - Gunicorn:
使用 Python语言编写的 WSGI Web服 务器。 - Plone:
基 于Zope的 内容 管理 系 统。 - Mezzanine:
基 于Django框 架 的 内容 管理 系 统。 - Orange:
基 于scikit-learn和 pandas的 开源机 器 学 习和 数 据 可 视化软件,由 卢布尔雅那 大学 开发,利用 了 PyQt5和 基 于Blink的 PyQtWebEngine,通 过广大 多 样的工具 箱 来 建造 数 据 分析 工作 流 程 [260]。 - SageMath:涵盖许多
数学 功 能 的 应用软件,它建造 在 NumPy、SciPy、matplotlib、SymPy、Maxima、GAP、FLINT、R等 开源软件包 之 上 。 - Veusz:
用 Python、PyQt和 NumPy写 成 的 科学 绘图软件,可 生成 出版 水 准 的 PDF或 SVG输出。 - MayaVi:
基 于VTK的 应用程 序 和 库,用 于交互 式 科学 数 据 可 视化和 采 用 Python的 3D绘图[261]。 - Blender:
開源 3D繪圖 軟體,使用 Python作為 建 模 工具 與 GUI語 言 。 - Inkscape:开源
的 SVG矢 量 图形编辑器 ,使用 Python用 于插件 。 - Pitivi:
用 Python开发的 基 于GStreamer的 视频编辑软件。
人工 智能
[编辑]经由Python开发
- Ray:对
人工 智能 及Python应用的 运行规模进行伸 缩的统一框 架 [262],由 Anyscale公司 开发。它构成 自 一 个核心 的 分布 式 运行时系统,和 加速 机 器 学 习工作 负载的 AI软件库。 - Kornia:
基 于PyTorch的 可 微分 计算机 视觉软件库[263]。 - spaCy:
用 Python和 Cython开发的 工 业级实力的 自然 语言处理软件库[264]。 - Argos Translate:
基 于OpenNMT的 离线神 经机器 翻 译软件库[265]。 - Stable Diffusion:
用 Python开发的 深度 学 习文 本 到 图像生成 模型 [266],基 于了CUDA、PyTorch、VAE、U-Net和 OpenAI的 CLIP[267],其代码和模型 权重已 公 开发布 ,可 以在大 多数 配 备有适度GPU的 消 费类计算机 硬 件 上 运行。 - Transformers:为下载和训练
前 沿的 预训练模型 提供 API和 工具 [268],由 Hugging Face开发,支持 在 PyTorch、TensorFlow和 JAX之 间的框 架 互操作性 。 - Gradio:它是
一 个Python库,允 许快速 创建和 分 享 用 于机器 学 习模型 、API或 任 何 任意 Python函数 的 Web应用程 序 。使用 Gradio,可 以构建 交互 式 用 户界面 ,与 各 种机器 学 习框架 兼 容 。还可以使用 Gradio以交互 方式 调试模型 、从用户获取 反 馈,并通过自动生成 的 可 共 享 链接轻松部署 模型 。[269][270] - LangChain:它是
一 个应用框 架 ,旨 在 简化使用 大型 语言模型 的 应用程 序 。作 为一个语言模型集成框架,LangChain的 用例 包括 文 档分析 和 总结摘要 ,代 码分析 和 聊天机 器 人 。[271] LangChain提供 了 一个标准接口,用 于将不同 的 语言模型 (LLM)连接在 一起 ,以及与其他工具 和 数 据 源 的 集成 。
社 群 流行
[编辑]- PyCon:
各地 社 群 舉辦的 會議 ,通常 每年 舉辦。各社 群 在 會議 中 討論 Python相關 的 議題 。 - Python Discord:
参与 者 众多的 Python社 区 [273]。 - PyLadies:
由 女性 社 群 發起 的 社 群 ,主要 注 重 於發展 Python的 女性 程 式 設計 社 群 。 - Django Girls:
使用 Django網 頁 設計 框 架 ,推廣使用 Python進行 網 頁 設計 的 技術 。
影響 的 语言
[编辑]Python
- Boo:
使用 了 缩进、类似的 语法和 类似的 对象模型 [274]。 - Cobra:
使用 了 缩进和 类似的 语法[275]。 - Coconut:
在 Python语法之 上 增加 了 用 于函数 式 编程的 新 特 征 的 Python变体[276]。 - CoffeeScript:
有 受Python启发的 语法。 - ECMAScript/JavaScript:从Python
借 鉴了迭代器 和 生成 器 [277]。 - GDScript:
内 置 于Godot游 戏引擎的非常 类似Python的 脚本 语言[25]。 - Genie:
基 于Vala编译器 的 具有 近似 Python语法的 语言。 - Go:其设计原则受到
了 Python的 可 读性与 易 用 性 的 启发[27],享有 相 同 风格的 数 组分片 语法。 - Groovy:受到Python
等 动态类型语言的 影 响[278]。 - Julia:
在 表 达高级数值计算 的 方式 和 支持 通用 编程上 借 鉴了Python等 语言[30]。 - Kotlin:
融合 了 Python和 Java特 征 ,极小化 了 样板代 码而增加 了 开发效率 [279]。 - Mojo:
基 于MLIR编译框 架 并设计为Python语言的 超 集 [280]。 - Nim:
使用 缩进和 类似的 语法[281]。 - Ruby:
主要 从Python等 语言中 借 鉴了特 征 [32]。 - Starlark:
用 在 Bazel软件中有 受Python启发语法的 语言[33]。 - Swift:
有 受Python启发的 语法[34]。
代 码示例
[编辑]- ^
縮 排 示 例 :def is_even(a: int) -> bool: """确定
数 a是 否 是 偶数 .""" if a % 2 == 0: print('偶数 !') return True print('奇数 !') return False #参 数 比 后 续部份多一 层缩进 def long_function_name( var_one, var_two, var_three, var_four): #可 选的圆括号 内 后 续行多 一 层缩进 if (this_is_first_thing and that_is_second_thing): do_something() #可 选的圆括号 内 后 续行不 额外缩进 elif (this_is_third_thing and that_is_fourth_thing): do_something_different() #参 数 相 对行首 缩进一 层 spam = long_function_name( arg_one, arg_two, arg_three, arg_four) #参 数 按开括号 界 定 垂直 对齐 eggs = long_function_name(arg_one, arg_two, arg_three, arg_four) #可 选的闭括号 位置 my_list = [ 1, 2, 3, 4, 5, 6, ] #可 选的闭括号 位置 my_set = { 1, 2, 3, 4, 5, 6, } - ^
采 用 了 并行赋值的 斐波那 契 数列 函数 示 例 :def fib(n): #
写 出 从第0项到第 n项的Fibonacci系列 a, b, i = 0, 1, 0 while i <= n: print(a, end=' ') a, b, i = b, a+b, i+1 print() - ^ 产生
素数 的 惰性 生成 器 的 示 例 :from itertools import count def generate_primes(stop_at=0): if stop_at != 1: primes = [2] yield 2 for n in count(3, 2): if 0 < stop_at < n: return # 引发StopIteration
例外 composite = False for p in primes: if not n % p: composite = True break elif p ** 2 > n: break if not composite: primes.append(n) yield n上述 函数 的 隐式迭代用例 :for i in generate_primes(): # 迭代于100
以内 所有 素数 上 if i > 100: break print(i)在 生成 器 表 达式中 使用 上述 函数 ,定 义了一 个惰性 的 、巨大 而并非 无限的 搜 集 的 示 例 :from itertools import islice primes_under_million = (i for i in generate_primes() if i < 1000000) two_thousandth_prime = islice(primes_under_million, 1999, 2000) print(next(two_thousandth_prime))
- ^
用 生成 器 模 拟协程 示 例 :def produce(n): try: for item in range(n): print(f'producing item {item} ->') yield item except GeneratorExit: return def consume(): item = None try: while True: item = yield item print(f'consuming item {item} <-') except GeneratorExit: return def main(): r = [] t1 = produce(10) t2 = consume() try: next(t2) while True: p = next(t1) r += [t2.send(p)] except StopIteration: t2.close() print(f'result items: {r}') main()
- ^ 遵循EAFP(请求
原 谅比获得许可更 容易 )风格的 例外 处理示 例 :f = None try: f = open("aFileName", mode="w") f.write(could_make_error()) #
不 存在 could_make_error()则产生 错误 except IOError as error: print(error) print("不能 打 开文件 ") except: #捕 获所有 例外 print("未 预期的 错误") else: #在 没 有 出 现例外 时执行 print("文 件 写 入 完全 成功 ") finally: #清 除 行 动,总是执行 if f: f.close() - ^
使用 with
将文 件 作 为资源 来 管理 的 示 例 :from contextlib import contextmanager @contextmanager def opened(filename, mode="r"): try: f = open(filename, mode) except IOError as error: print(error) yield None else: try: yield f finally: f.close() with opened("aFileName", mode="w") as f: try: f.write(could_make_error()) #
不 存在 could_make_error()则产生 错误 except AttributeError: print("不能 打 开文件 ") except: #捕 获所有 例外 print("未 预期的 错误") else: #在 没 有 出 现例外 时执行 print("文 件 写 入 完全 成功 ") - ^
原生 的 协程示 例 :import asyncio import random async def produce(queue, n): for item in range(n): #
生 产一个项目 ,使用 sleep模 拟I/O操作 print(f'producing item {item} ->') await asyncio.sleep(random.random()) #将 项目放 入 队列 await queue.put(item) #指示 生 产完毕 await queue.put(None) async def consume(queue): while True: #等 待 来 自生 产者的 项目 item = await queue.get() if item is None: break #消 费这个项目 ,使用 sleep模 拟I/O操作 print(f'consuming item {item} <-') await asyncio.sleep(random.random()) async def main(): queue = asyncio.Queue() task1 = asyncio.create_task(produce(queue, 10)) task2 = asyncio.create_task(consume(queue)) await task1 await task2 asyncio.run(main()) - ^
局部 变量示 例 :>>> def spam(): ... print(a) ... >>> a = 10 >>> spam() 10 >>> def spam(): ... a = 100 ... print(a) ... >>> spam() 100 >>> a 10 >>> def spam(): ... a *= 10 ... print(a) ... >>> spam() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in spam UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
- ^
全局 变量示 例 :>>> def spam(): ... global a ... a *= 10 ... print(a) ... >>> a = 10 >>> spam() 100 >>> a 100 >>> def spam(): ... def eggs(): ... print(a) ... global a ... eggs() ... >>> a = 10 >>> spam() 10 >>> def spam(): ... def eggs(): ... a *= 10 ... print(a) ... global a ... eggs() ... >>> spam() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 6, in spam File "<stdin>", line 3, in eggs UnboundLocalError: cannot access local variable 'a' where it is not associated with a value
- ^
非 局部 变量示 例 :>>> def spam(): ... def eggs(): ... nonlocal a ... a *= 10 ... print(a) ... a = 10 ... eggs() ... >>> spam() 100 >>> def spam(): ... def eggs(): ... nonlocal a ... a *= 10 ... print(a) ... global a ... eggs() ... File "<stdin>", line 3 SyntaxError: no binding for nonlocal 'a' found
- ^
序列 解 包 、可 迭代解 包 和字 典 解 包 示 例 :>>> a = [1, 2, 3]; b = [4, 5] >>> i, j, k = a >>> print(i, j, k) 1 2 3 >>> c = [*a, b] >>> c [1, 2, 3, [4, 5]] >>> d = {*a, *b} >>> d {1, 2, 3, 4, 5} >>> e = (*a, *b) >>> e (1, 2, 3, 4, 5) >>> f = {'as':1, 'bs':2 }; g = {'cs':3, 'ds':4} >>> h = {**f, **g} >>> h {'as': 1, 'bs': 2, 'cs': 3, 'ds': 4}
- ^
列 表 的 推导式 示 例 。比 如:>>> [x + 3 for x in range(4)] [3, 4, 5, 6]
快速 排 序 算法 可 以优雅 的 (尽 管 不 高 效 的 )使用 列 表 推导式 表 达为:def qsort(L): if L == []: return [] pivot = L[0] return (qsort([x for x in L[1:] if x < pivot]) + [pivot] + qsort([x for x in L[1:] if x >= pivot]))
- ^
生成 器 表 达式示 例 。比 如:>>> sum(x * x for x in range(10)) 285 >>> dict((n, n*n) for n in range(5)) {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} >>> set(n*n for n in range(5)) {0, 1, 4, 9, 16}
- ^
字典 推导式 {expr1: expr2 for k, v in d}
,等 价于:result={} for k, v in d.items(): result[expr1]=expr2 return result
>>> {x: x + 3 for x in range(4)} {0: 3, 1: 4, 2: 5, 3: 6}
集合 推导式 {expr1 for x in stuff}
,等 价于:result = set() for x in stuff: result.add(expr1) return result
>>> {x + 3 for x in range(4)} {3, 4, 5, 6}
- ^
下面 几个判断 语句为真,表示 列 表 分 片 结果符合 预期:>>> nums = [1, 3, 5, 7, 8, 13, 20] >>> nums[2:5] == [5, 7, 8] #从下标为2
的 元素 切 割 到 下 标为5的 元素 ,但 不 包含 下 标为5的 元素 。 True >>> nums[1:] == [3, 5, 7, 8, 13, 20] #切 割 到 最 后 一 个元素 。 True >>> nums[:-3] == [1, 3, 5, 7] #从最开始的 元素 一直切割到倒数第3个元素 。 True >>> nums[:] == [1, 3, 5, 7, 8, 13, 20] #返 回 所有 元素 。改 变新的 列 表 不 会 影 响到nums。 True >>> nums[1:5:2] == [3, 7] #从下标为1的 元素 切 割 到 下 标为5的 元素 ,但 不 包含 下 标为5的 元素 ,且步长为2。 True - ^
匿名 函数 示 例 :>>> from functools import reduce >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 15 >>> fac = lambda n: (1 if n<2 else n*fac(n-1)) >>> fac(5) 120 >>> [*map(fac, [1, 2, 3, 4, 5])] [1, 2, 6, 24, 120]
不 动点组合子 示 例 :>>> Y = lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args))) >>> fac = lambda f: lambda n: (1 if n<2 else n*f(n-1)) >>> Y(fac)(5) 120 >>> fib = lambda f: lambda n: 0 if n == 0 else (1 if n == 1 else f(n-1) + f(n-2)) >>> Y(fib)(6) 8 >>> [*map((lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args))))(lambda f: lambda n: (1 if n<2 else n*f(n-1))), [1, 2, 3, 4, 5])] [1, 2, 6, 24, 120]
上述 Y组合子 代 码源出自 Rosetta Code. [2020-10-21]. (原始 内容 存 档于2021-01-11).其原 理 可 参 见Equational derivations of the Y combinator and Church encodings in Python. [2020-10-21]. (原始 内容 存 档于2020-11-12). - ^
多 行 字 符 串 文字 带有字 符 串 插值(使用 了 format
方法 )的 示 例 :print("""亲爱
的 {recipient},我 希望 你离开Sunnydale并永不 返 回 .不 是 很爱你的, {sender} """.format(sender="吸血鬼 猎人Buffy", recipient="Spike")) - ^
原始 字 符 串 的 示 例 :>>> # Windows
路 径 ,即 使 是 原始 字 符 串 也不能 结束于反斜 杠 >>> r"C:\Spam\Eggs\Ham\" File "<stdin>", line 1 r"C:\Spam\Eggs\Ham\" ^ SyntaxError: EOL while scanning string literal >>> dos_path = r"C:\Spam\Eggs\Ham\ " #通 过增加尾 随 的 空 格 >>> dos_path.rstrip() # 并接着 移 除 它来避免错误 'C:\\Spam\\Eggs\\Ham\\' >>> quoted_dos_path = r'"{}"'.format(dos_path) >>> quoted_dos_path '"C:\\Spam\\Eggs\\Ham\\ "' >>> #匹 配 具有 可能 的 反 斜 杠 引述的 引述字 符 串 的 正 则表达式 >>> import re >>> re.match(r'"(([^"\\]|\\.)*)"', quoted_dos_path).group(1).rstrip() 'C:\\Spam\\Eggs\\Ham\\' >>> code = 'spam(2, eggs)' >>> #反 转有二个参数的函数调用的两个实际参数 >>> re.sub(r'\(([^,]*),\s*([^,]*)\)', r'(\2, \1)', code) 'spam(eggs, 2)' >>> #注意 如果实际参 数 中有 圆括号 或 逗号则上例 无效。 - ^
字 符 串 文字 串 接 示 例 :>>> print("hello " 'world') hello world >>> str1="hello "; str2='world' >>> print(str1 + str2) hello world
- ^
格式 化 字 符 串 的 示 例 ,例 如下列 命令 行 echo
命令 :num="3"; printer="HP Laserjet" echo "I just printed ${num} pages to the printer ${printer}"
等 价于如下Python中 的 任 何 一 种print
函数 调用:num = 3; printer="HP Laserjet" print(f"I just printed {num} pages to the printer {printer}") print("I just printed {} pages to the printer {}".format(num, printer)) print("I just printed {0} pages to the printer {1}".format(num, printer)) print("I just printed {num} pages to the printer {printer}".format(num=num, printer=printer)) print("I just printed %s pages to the printer %s" % (num, printer)) print("I just printed %(num)s pages to the printer %(printer)s" % {"num": num, "printer": printer})
- ^ 词法闭包
的 例 子 :def f(x): def g(y): return x + y return g #
返 回 一 个闭包 。 h = lambda x: lambda y: x + y #将 指定 闭包赋值给变量 。 a = f(1) b = h(1) c = f(2) #使用 存 储在变量中 的 闭包。 assert a(5) == 6 assert b(5) == 6 assert c(5) == 7 #使用 闭包而不事 先 把 它们绑定到 变量。 assert f(1)(5) == 6 # f(1)是 个闭包 。 assert h(1)(5) == 6 # h(1)是 个闭包 。 assert f(2)(5) == 7 # f(2)是 个闭包 。 - ^
函数 的 形式 参 数 缺 省 值的持久 性 示 例 :>>> def f(a, L=[]): ... L.append(a) ... return L ... >>> print(f(1)) [1] >>> print(f(2)) [1, 2] >>> print(f(3)) [1, 2, 3]
- ^
函数 的形 实参数 二者结合示例。例 如:>>> def spam(a): ... a.append('LovelySpam') ... >>> def eggs(b): ... b=100 #实际
上 是重 新 绑定了 另一个整型对象100 ... >>> a=[] >>> b=10 >>> spam(a) >>> eggs(b) >>> print(a) ['LovelySpam'] >>> print(b) 10 - ^
函数 的 形式 参 数 缺 省 值的定 义示例 :>>> from inspect import getfullargspec >>> def func(p1, /, p2, p3="x", *, p4): pass ... >>> getfullargspec(func) FullArgSpec(args=['p1', 'p2', 'p3'], varargs=None, varkw=None, defaults=('x',), kwonlyargs=['p4'], kwonlydefaults=None, annotations={})
- ^
函数 的 可 变参数 的 定 义示例 :>>> from inspect import getfullargspec >>> def func(p1, /, p2, *args, p3, **kwargs): pass ... >>> getfullargspec(func) FullArgSpec(args=['p1', 'p2'], varargs='args', varkw='kwargs', defaults=None, kwonlyargs=['p3'], kwonlydefaults=None, annotations={})
- ^
定 义修饰器的 示 例 :def viking_chorus(myfunc): def inner_func(*args, **kwargs): for i in range(3): myfunc(*args, **kwargs) return inner_func
调用
修 饰器的 示 例 :@viking_chorus def menu_item(*args): print(", ".join(args)+", and spam")
等 价于:def menu_item(*args): print(", ".join(args)+", and spam") menu_item = viking_chorus(menu_item)
viking_chorus
修 饰后的 menu_item
将 原 来 定 义运行 3次 :>>> menu_item("egg","bacon") egg, bacon, and spam egg, bacon, and spam egg, bacon, and spam
- ^
修 饰器工 厂示 例 ,这里的 favourite_colour
接受 一 个实际参数 ,并返回 一 个修饰器:def favourite_colour(colour): def decorator(func): def wrapper(*args, **kwargs): print(f"My favourite colour is {colour}.") func(*args, **kwargs) return wrapper return decorator def invincible(func): def wrapper(*args, **kwargs): print("I'm invincible!") func(*args, **kwargs) return wrapper
使用 毗连的 修 饰符链接修 饰器示 例 :@invincible @favourite_colour("blue") def black_knight(): print("None shall pass.")
使用 中 间变量 链接修 饰器示 例 :blue_decorator = favourite_colour("blue") decorated_by_blue = blue_decorator(black_knight) black_knight = invincible(decorated_by_blue)
它们
等 价于:black_knight = invincible(favourite_colour("blue")(black_knight))
black_knight()结果为:
>>> black_knight() I'm invincible! My favourite colour is blue. None shall pass.
- ^ 调用
函数 使用 帮助信 息 示 例 。比 如:>>> def randint(a, b): ... "Return random integer in range [a, b], including both end points." ... >>> help(randint) Help on function randint in module __main__: randint(a, b) Return random integer in range [a, b], including both end points.
- ^ 如下这样给参
数 增加 类型标注的 提示 信 息 :>>> def greeting(name: str) -> str: ... return 'Hello ' + name ... >>> greeting.__annotations__ {'name': <class 'str'>, 'return': <class 'str'>}
- ^ 对象
的 方法 示 例 :>>> class Fish(object): ... hungry = True ... def eat(self, food): ... if food is not None: ... self.hungry=False ... >>> def status(self): ... print("Hungray!" if self.hungry else "Not hungray!") ... >>> e = Fish() >>> status(e) Hungray! >>> Fish.hungry = False >>> from types import MethodType >>> e.status = MethodType(status, e) >>> e.status() Not hungray! >>> Fish.hungry = True >>> Fish.status = status >>> f = Fish() >>> Fish.status(f) Hungray! >>> f.eat("earthworm") >>> f.status() Not hungray!
- ^
特殊 方法 和子 类调用 超 类方法的 例 子 :>>> class Thought(object): ... cls_name = "类型Thought" ... def __init_subclass__(cls): ... cls.cls_name = "类型Thought
的 子 类型" ... def __init__(self, *args, **kwargs): ... print(f"我 是 {type(self).cls_name}的 新 对象!") ... if len(args) != 0 or len(kwargs) != 0: ... print(f"init: nargs={len(args)}, nkwargs={len(kwargs)}") ... self.notion = "我 觉得我 在 平行 宇宙 中 把 车停歪 了 ." ... def message(self, *args): ... print(self.notion) ... if len(args) != 0: ... print("\n".join(args)) ... >>> class Advice(Thought): ... def message(self): ... super().message("警告 :日 历里的 日 期 比 它们看 起 来 更 近 !") ... >>> t = Thought()我 是 类型Thought的 新 对象! >>> t.message()我 觉得我 在 平行 宇宙 中 把 车停歪 了 . >>> a = Advice()我 是 类型Thought的 子 类型的 新 对象! >>> a.message()我 觉得我 在 平行 宇宙 中 把 车停歪 了 .警告 :日 历里的 日 期 比 它们看 起 来 更 近 ! >>> #内省 一 下 : >>> [*super.__dict__] ['__new__', '__repr__', '__getattribute__', '__get__', '__init__', '__thisclass__', '__self__', '__self_class__', '__doc__'] >>> [*super(Advice).__thisclass__.__dict__] ['__module__', 'message', '__doc__', 'cls_name'] >>> super(Advice).__thisclass__.__dict__['cls_name'] '类型Thought的 子 类型' >>> [*super(Advice, a).__self__.__dict__] ['notion'] >>> super(Advice, a).__self_class__.__dict__['cls_name'] '类型Thought的 子 类型' >>> super(Advice, a).message()我 觉得我 在 平行 宇宙 中 把 车停歪 了 . >>> super(Advice).__get__(a).message()我 觉得我 在 平行 宇宙 中 把 车停歪 了 . - ^
在 类中采 用 数 据 描述器 的 示 例 :>>> class RevealAccess: ... """
正常 的 设置和 返 回 值的数 据 描述器 , ... 它还打 印 记录这次访问的 一 个消息 。 ... """ ... def __init__(self, initval=None, name='var'): ... self.val = initval ... self.name = name ... def __get__(self, obj, objtype): ... print('Retrieving', self.name) ... return self.val ... def __set__(self, obj, val): ... print('Updating', self.name) ... self.val = val ... >>> class MyClass: ... x = RevealAccess(10, 'var "x"') ... y = 5 ... >>> m = MyClass() >>> m.x Retrieving var "x" 10 >>> vars(m) {} >>> MyClass.__dict__['x'].val 10 >>> m.x = 20 Updating var "x" >>> vars(m) {} >>> MyClass.__dict__['x'].val 20 >>> m.y 5 >>> vars(m) {} >>> m.y = 5 >>> vars(m) {'y': 5} - ^
特殊 方法 、类方法 和 静 态方法 (__new__()
)示 例 :>>> from weakref import WeakValueDictionary >>> class D: ... _template = {} ... _obj_dict = WeakValueDictionary() ... def __new__(cls, *args, **kwargs): ... obj = super(D, cls).__new__(cls) ... cls._obj_dict[id(obj)] = obj ... return obj ... @classmethod ... def load(cls, dict): ... cls._template.update(dict) ... @classmethod ... def create(cls, *args, **kwargs): ... return cls(cls._template, *args, **kwargs) ... @classmethod ... def count(cls): ... return len(cls._obj_dict) ... def __init__(self, dict={}, /, *args, **kwargs): ... self.__dict__.update(dict) ... self.__dict__.update(kwargs) ... def __call__(self, *args, **kwargs): ... self.__dict__.update(kwargs) ... return self.__dict__.copy() ... def __len__(self): ... return len(self.__dict__) ... def __getitem__(self, key): ... return self.__dict__[key] ... def __setitem__(self, key, value): ... self.__dict__[key] = value ... >>> a = {'ak': 1, 'bk': 2, 'ck': 3} >>> d = D(a, dk=4) >>> d() {'ak': 1, 'bk': 2, 'ck': 3, 'dk': 4} >>> D.load(a) >>> e = D.create(ck=4) >>> e() {'ak': 1, 'bk': 2, 'ck': 4} >>> f = D(ak=1, bk=2) >>> f(ck=3) {'ak': 1, 'bk': 2, 'ck': 3} >>> f['ak'] 1 >>> f['ak'] = 5 >>> f() {'ak': 5, 'bk': 2, 'ck': 3} >>> len(f) 3 >>> D.count() 3 >>> del f >>> D.count() 2 >>> d.__weakref__ in D._obj_dict.valuerefs() True
- ^
在 类中调用property()
的 例 子 :>>> class C: ... def __init__(self): ... self.__x = None ... def getx(self): ... return self.__x ... def setx(self, value): ... self.__x = value ... def delx(self): ... del self.__x ... x = property(getx, setx, delx, "I'm the 'x' property.") ... >>> c = C() >>> vars(c) {'_C__x': None} >>> {*C.__dict__} {'__init__', 'setx', '__weakref__', 'delx', 'x', 'getx', '__doc__', '__module__', '__dict__'}
上述 代 码可以采用 修 饰符进一 步 的 书写为:>>> class C: ... def __init__(self): ... self.__x = None ... @property ... def x(self): ... """I'm the 'x' property.""" ... return self.__x ... @x.setter ... def x(self, value): ... self.__x = value ... @x.deleter ... def x(self): ... del self.__x ... >>> c = C() >>> vars(c) {'_C__x': None} >>> {*C.__dict__} {'__init__', '__weakref__', 'x', '__doc__', '__module__', '__dict__'}
- ^
建立 列 表 的 特殊 语法示 例 :a_list = [1, 2, 3, 'a dog']
采 用 正常 的 对象创建方式 的 示 例 :a_second_list = list() a_second_list.append(4) a_second_list.append(5)
建立 元 组的特殊 语法示 例 :a_tuple = 1, 2, 3, 'four'
建立 集合 的 特殊 语法示 例 :some_set = {0, (), False}
建立 字典 的 特殊 语法示 例 :a_dictionary = {'key 1': 'value 1', 2: 3, 4: []}
- ^
两个类及
元 类等的 实例关系(蓝色连接)与 继承关系(绿色连接)示 意 图:r = object c = type class M(c): pass class A(metaclass=M): pass class B(A): pass b = B()
>>> type(b) <class '__main__.B'> >>> print(type(B), B.__bases__) <class '__main__.M'> (<class '__main__.A'>,) >>> print(type(A), A.__bases__) <class '__main__.M'> (<class 'object'>,) >>> print(type(M), M.__bases__) <class 'type'> (<class 'type'>,) >>> print(type(c), c.__bases__) <class 'type'> (<class 'object'>,) >>> print(type(r), r.__bases__) <class 'type'> ()
- ^
数学 运算示 例 。比 如:>>> def mean(seq): ... return sum(seq) / len(seq) ... >>> mean([3, 4]) 3.5 >>> import math >>> print(math.sin(math.pi/2)) 1.0
註釋
[编辑]- ^ 1.0 1.1 GitHub repository of Python 0.9.1 source. [2023-02-25]. (
原始 内容 存 档于2023-03-05).
HISTORY. Python source distribution. Python Foundation. [2017-11-23]. (原始 内容 存 档于2017-12-01). - ^ "Python 3.13 released"; 检索
日 期 : 2024年 10月 7日 ;作品 或 名稱 使用 語 言 :英語 ;出版 日 期 : 2024年 10月 7日 ;宣 传物: LWN.net. - ^ Python 3.13.0 (final) released. 2024
年 10月 7日 [2024年 10月 8日 ] (英語 ). - ^ "Python 3.13 Debuts With New Interactive Interpreter & Experimental JIT"; 检索
日 期 : 2024年 10月 8日 ;作品 或 名稱 使用 語 言 :英語 ;出版 日 期 : 2024年 10月 7日 ;宣 传物: Phoronix. - ^ "Python 3.14 Alpha 1 Released With Early Changes"; 检索
日 期 : 2024年 10月 16日 ;作品 或 名稱 使用 語 言 :英語 ;出版 日 期 : 2024年 10月 15日 ;宣 传物: Phoronix. - ^ Python 3.14.0 alpha 1 is now available. 2024
年 10月 15日 [2024年 10月 16日 ] (英語 ). - ^ 7.0 7.1 Glossary — duck-typing. [2023-06-28]. (
原始 内容 存 档于2020-06-25). - ^
Why is Python a dynamic language and also a strongly typed language - Python Wiki. wiki.python.org. [2021-01-27]. (
原始 内容 存 档于2021-03-14). - ^ 9.0 9.1 PEP 483 – The Theory of Type Hints. [2023-03-16]. (
原始 内容 存 档于2023-03-26). - ^ File extension .pyo was removed in Python 3.5. See PEP 0488 (页面
存 档备份,存 于互联网档案 馆) - ^ Holth, Moore. PEP 0441 -- Improving Python ZIP Application Support. 2014-03-30 [2015-11-12]. (
原始 内容 存 档于2018-12-26). - ^ 12.0 12.1 12.2 Why was Python created in the first place?. Python FAQ. [2007-03-22]. (
原始 内容 存 档于2008-02-23). - ^ Andrew Kuchling, Guido van Rossum. LJ Interviews Guido van Rossum. November 1, 1998 [2023-03-21]. (
原始 内容 存 档于2023-03-30).String slicing came from Algol-68 and Icon.
- ^ 14.0 14.1
The Python Standard Library - Functional Programming Modules - itertools — Functions creating iterators for efficient looping. [2020-04-22]. (
原始 内容 存 档于2020-06-14). - ^
van Rossum, Guido. An Introduction to Python for UNIX/C Programmers. Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group). 1993 [2021-03-14]. (
原始 内容 存 档于2013-06-17).even though the design of C is far from ideal, its influence on Python is considerable.
- ^ 16.0 16.1
The Python Tutorial - 9. Classes. [20 February 2012]. (
原始 内容 存 档于2012-10-23).Compared with other programming languages, Python’s class mechanism adds classes with a minimum of new syntax and semantics. It is a mixture of the class mechanisms found in C++ and Modula-3.
- ^ Fredrik Lundh. Python-list mailing list - passing by refference. [2023-03-06]. (
原始 内容 存 档于2023-03-06).replace "CLU" with "Python", "record" with "instance", and "procedure" with "function or method", and you get a pretty accurate description of Python's object model.
- ^ 18.0 18.1
Simionato, Michele. The Python 2.3 Method Resolution Order. Python Software Foundation. [2021-03-14]. (
原始 内容 存 档于2020-08-20).The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers.
- ^
Kuchling, A. M. Functional Programming HOWTO. Python v2.7.2 documentation. Python Software Foundation. [9 February 2012]. (
原始 内容 存 档于2012-10-24). - ^ 20.0 20.1 20.2 Guido van Rossum. Python Reference Manual - Version 1.2 (PDF). CWI Report CS-R9525. May 1995 [2023-03-04]. (
原始 内容 存 档 (PDF)于2023-03-05).Python is a simple, yet powerful, interpreted programming language that bridges the gap between C and shell programming, and is thus ideally suited for "throw-away programming" and rapid prototyping. Its syntax is put together from constructs borrowed from a variety of other languages; most prominent are influences from ABC, C, Modula-3 and Icon.
The Python interpreter is easily extended with new functions and data types implemented in C. Python is also suitable as an extension language for highly customizable C applications such as editors or window managers. - ^
Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony. PEP 318 – Decorators for Functions and Methods. Python Enhancement Proposals. Python Software Foundation. 2 September 2004 [24 February 2012]. (
原始 内容 存 档于2020-06-03). - ^
More Control Flow Tools. Python 3 documentation. Python Software Foundation. [24 July 2015]. (
原始 内容 存 档于2016-06-04). - ^ re — Regular expression operations. docs.python.org. [2022-09-06]. (
原始 内容 存 档于2018-07-18).This module provides regular expression matching operations similar to those found in Perl.
- ^
CoffeeScript. coffeescript.org. [2021-03-14]. (
原始 内容 存 档于2020-06-12). - ^ 25.0 25.1 FAQ: What is GDScript and why should I use it?. [2020-09-13]. (
原始 内容 存 档于2020-05-19). - ^
The Genie Programming Language Tutorial. [28 February 2020]. (
原始 内容 存 档于2020-06-01). - ^ 27.0 27.1 Frequently Asked Questions (FAQ) - The Go Programming Language. The Go Programming Language. [February 26, 2016].
- ^
Perl and Python influences in JavaScript. www.2ality.com. 24 February 2013 [15 May 2015]. (
原始 内容 存 档于2018-12-26). - ^ Rauschmayer, Axel. Chapter 3: The Nature of JavaScript; Influences. O'Reilly, Speaking JavaScript. [15 May 2015]. (
原始 内容 存 档于2018-12-26). - ^ 30.0 30.1 Home · The Julia Language. docs.julialang.org. [2018-08-15]. (
原始 内容 存 档于11 January 2021) (英 语). - ^ Krill, Paul. Mojo language marries Python and MLIR for AI development. InfoWorld. 2023-05-04 [2023-05-05]. (
原始 内容 存 档于5 May 2023) (英 语). - ^ 32.0 32.1 Bini, Ola. Practical JRuby on Rails Web 2.0 Projects: Bringing Ruby on Rails to Java. Berkeley: APress. 2007: 3. ISBN 978-1-59059-881-8.
It draws primarily on features from Perl, Smalltalk, Python, Lisp, Dylan, and CLU.
- ^ 33.0 33.1 Starlark Language. [25 May 2019]. (
原始 内容 存 档于2020-06-15). - ^ 34.0 34.1
Lattner, Chris. Chris Lattner's Homepage. Chris Lattner. 3 June 2014 [3 June 2014]. (
原始 内容 存 档于2018-12-25).Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
- ^
彼 德 ·諾 米 格 . Python for Lisp Programmers. [2020-04-21]. (原始 内容 存 档于2020-06-14).Python can be seen as a dialect of Lisp with "traditional" syntax (what Lisp people call "infix" or "m-lisp" syntax).
- ^ Rossum, Guido Van. The History of Python: A Brief Timeline of Python. The History of Python. 2009-01-20 [2021-03-05]. (
原始 内容 存 档于5 June 2020). - ^ Peterson, Benjamin. Python Insider: Python 2.7.18, the last release of Python 2. Python Insider. 20 April 2020 [27 April 2020]. (
原始 内容 存 档于26 April 2020). - ^ Stack Overflow Developer Survey 2020. Stack Overflow. [2021-03-05]. (
原始 内容 存 档于2 March 2021). - ^ The State of Developer Ecosystem in 2020 Infographic. JetBrains: Developer Tools for Professionals and Teams. [2021-03-05]. (
原始 内容 存 档于1 March 2021) (英 语). - ^ index | TIOBE - The Software Quality Company. www.tiobe.com. [2021-02-02]. (
原始 内容 存 档于25 February 2018).Python has won the TIOBE programming language of the year award! This is for the fourth time in the history, which is a record! The title is awarded to the programming language that has gained most popularity in one year.
- ^ PYPL PopularitY of Programming Language index. pypl.github.io. [2021-03-26]. (
原始 内容 存 档于14 March 2017) (英 语). - ^ Guido van Rossum - Resume. [2022-10-12]. (
原始 内容 存 档于2022-12-21). - ^ amoeba operating system. [2023-02-25]. (
原始 内容 存 档于2023-03-05). - ^ Whetting Your Appetite. The Python Tutorial. Python Software Foundation. [2012-02-20]. (
原始 内容 存 档于2012-10-26). - ^ Benevolent dictator for life. Linux Format. 2005-02-01 [2007-11-01]. (
原始 内容 存 档于2006-10-01). - ^ Transfer of power. [2020-11-29]. (
原始 内容 存 档于2018-07-12). - ^ PEP 8100. python. Python Software Foundation. [2019-05-04]. (
原始 内容 存 档于2020-06-04). - ^ Steering Council nomination: Guido van Rossum (2020 term). [2020-10-11]. (
原始 内容 存 档于2019-12-29). - ^ The Making of Python. Artima Developer. [2007-03-22]. (
原始 内容 存 档于2016-09-01). - ^ Older source releases (1.0.1 - 1.6). [2023-03-05]. (
原始 内容 存 档于2023-03-05). - ^ HISTORY. [2020-09-12]. (
原始 内容 存 档于2017-12-01).Lambda expressions are particularly useful in combination with map(), filter() and reduce(), described below. Thanks to Amrit Prem for submitting this code (as well as map(), filter(), reduce() and xrange())!
- ^ LJ #37: Python 1.4 Update. [2007-04-29]. (
原始 内容 存 档于2007-05-01). - ^ Kuchling, A. M.; Zadka, Moshe. What's New in Python 2.0. Python Software Foundation. 2000-10-16 [2012-02-11]. (
原始 内容 存 档于2012-10-23). - ^ Hylton, Jeremy. PEP 227 - Statically Nested Scopes. 2000-11-01 [2007-03-22]. (
原始 内容 存 档于2007-03-29). - ^ 55.0 55.1 55.2 Guido van Rossum. Unifying types and classes in Python 2.2. [2020-09-26]. (
原始 内容 存 档于2019-09-28). - ^ What’s New in Python 2.2 - PEP 234: Iterators. [2020-10-21]. (
原始 内容 存 档于2021-02-07). - ^ What’s New in Python 2.2 - PEP 255: Simple Generators. [2020-10-21]. (
原始 内容 存 档于2021-02-07). - ^ What’s New in Python 2.2 - Descriptors. [2020-10-21]. (
原始 内容 存 档于2021-02-07). - ^ 59.0 59.1 59.2 What’s New in Python 2.4 - PEP 318: Decorators for Functions and Methods. [2020-10-21]. (
原始 内容 存 档于2021-02-07). - ^ What’s New in Python 2.5 - PEP 343: The ‘with’ statement. [2020-10-21]. (
原始 内容 存 档于2021-02-07). - ^ PEP 339 – Design of the CPython Compiler. 2005 [2023-03-06]. (
原始 内容 存 档于2023-03-06). - ^ Guido van Rossum. What’s New In Python 3.0. [2023-02-18]. (
原始 内容 存 档于2012-11-02). - ^ What’s New In Python 3.4 - asyncio. [2023-02-22]. (
原始 内容 存 档于2023-06-13). - ^ What’s New In Python 3.5 - PEP 484 - Type Hints. [2023-02-25]. (
原始 内容 存 档于2016-06-18). - ^ PEP 492 - Coroutines with async and await syntax. [2019-11-21]. (
原始 内容 存 档于2019-01-05). - ^ 66.0 66.1 What’s New in Python 3.8 - Assignment expressions. [2023-03-08]. (
原始 内容 存 档于2021-06-01). - ^ Paul Krill, Guido Van Rossum. Guido van Rossum resigns: What’s next for Python. Jul 27, 2018 [2023-03-19]. (
原始 内容 存 档于2023-03-19). - ^ PEP 585 – Type Hinting Generics In Standard Collections. [2023-03-17]. (
原始 内容 存 档于2023-05-25).
The Python Standard Library - Built-in Types - Generic Alias Type. [2023-03-17]. (原始 内容 存 档于2020-06-14). - ^ What’s New In Python 3.9 - New Parser. [2023-02-22]. (
原始 内容 存 档于2020-10-07). - ^ What’s New In Python 3.10 - PEP 634: Structural Pattern Matching. [2023-02-22]. (
原始 内容 存 档于2023-06-11). - ^ PEP 604 – Allow writing union types as X | Y. [2023-03-17]. (
原始 内容 存 档于2023-05-26).
The Python Standard Library - Built-in Types - Union Type. [2023-03-17]. (原始 内容 存 档于2020-06-14). - ^ What’s New In Python 3.11 - Faster CPython. [2023-03-24]. (
原始 内容 存 档于2023-06-13). - ^ What’s New In Python 3.12 — PEP 695: Type Parameter Syntax. [2023-10-20]. (
原始 内容 存 档于2023-11-13). - ^ What’s New In Python 3.13.
- ^ Python Developer's Guide — Status of Python Version. devguide.python.org. [2022-08-26]. (
原始 内容 存 档于2022-08-26). - ^ PEP 8105 – 2024 Term Steering Council election. Python Software Foundation. [2023-12-12]. (
原始 内容 存 档于2024-04-18). - ^ 77.0 77.1 The Python Language Reference - 3. Data model - Special method names. [2020-09-25]. (
原始 内容 存 档于2012-10-26). - ^ aspectlib. [2020-09-28]. (
原始 内容 存 档于2014-11-05).aspectlib is an aspect-oriented programming, monkey-patch and decorators library. It is useful when changing behavior in existing code is desired.
- ^ PEP 316 -- Programming by Contract for Python. [2021-01-17]. (
原始 内容 存 档于2021-01-22).- Deal. [2021-06-20]. (
原始 内容 存 档于2021-07-16).python library for design by contract (DbC) and checking values, exceptions, and side-effects.
- icontract. [2021-01-17]. (
原始 内容 存 档于2021-01-21).icontract provides design-by-contract to Python3 with informative violation messages and inheritance.
- PyContracts. [2021-01-17]. (
原始 内容 存 档于2021-01-22).PyContracts is a Python package that allows to declare constraints on function parameters and return values.
- dpcontracts. [2021-01-17]. (
原始 内容 存 档于2021-01-22).This module provides a collection of decorators that makes it easy to write software using contracts.
- Deal. [2021-06-20]. (
- ^ PyDatalog. [2012-07-22]. (
原始 内容 存 档于2020-06-13). - ^ Extending Python with C or C++ — Reference Counting in Python. Docs.python.org. [2020-06-05]. (
原始 内容 存 档于2012-10-18) (英 语). - ^ CPython’s internals — Garbage collector design — Optimization: generations.
- ^ Functional Programming HOWTO. [2020-09-26]. (
原始 内容 存 档于2012-10-24). - ^ van Rossum, Guido. The fate of reduce() in Python 3000. Artima Developer. [2007-03-22]. (
原始 内容 存 档于2007-04-07). - ^ Functional Programming Modules. Docs.python.org. [2020-09-26]. (
原始 内容 存 档于2020-09-20). - ^ Guido van Rossum. Foreword for "Programming Python" (1st ed.). 1996-05-01 [2020-09-12]. (
原始 内容 存 档于2014-07-24).Despite all its elegance and power and the availability of a free implementation, ABC never became popular in the Unix/C world. I can only speculate about the reasons, but here's a likely one: the difficulty of adding new "primitive" operations to ABC.
- ^ Guido van Rossum. Extending and Embedding the Python Interpreter - Version 1.2 (PDF). CWI Report CS-R9527. May 1995 [2023-03-05]. (
原始 内容 存 档 (PDF)于2023-03-05).Python is an interpreted object oriented programming language. This document describes how to write modules in C or C++ to extend the Python interpreter with new modules. Those modules can define new functions but also new object types and their methods. The document also describes how to embed the Python interpreter in another application, for use as an extension language. Finally, it shows how to compile and link extension modules so that they can be loaded dynamically (at run time) into the interpreter, if the underlying operating system supports this feature.
- ^ The Python Standard Library - Generic Operating System Services - ctypes — A foreign function library for Python. [2022-01-14]. (
原始 内容 存 档于2022-04-27). - ^ PEP 523 – Adding a frame evaluation API to CPython. [2022-08-29]. (
原始 内容 存 档于2022-08-29). - ^ 90.0 90.1 The Python Language Reference - 2. Lexical analysis - Explicit line joining. [2023-02-17]. (
原始 内容 存 档于2018-01-09). - ^ The Python Language Reference - 2. Lexical analysis - Comments. [2023-03-11]. (
原始 内容 存 档于2018-01-09). - ^ The Python Language Reference - 7. Simple statements. [2020-10-30]. (
原始 内容 存 档于2023-06-06).
The Python Language Reference - 10. Full Grammar specification. [2023-02-17]. (原始 内容 存 档于2023-06-06).simple_stmts:
| simple_stmt !';' NEWLINE # Not needed, there for speedup
| ';'.simple_stmt+ [';'] NEWLINE
- ^ The Python Language Reference - 8. Compound statements. [2023-02-18]. (
原始 内容 存 档于2019-11-27). - ^ The Python Language Reference - 10. Full Grammar specification. [2023-02-17]. (
原始 内容 存 档于2023-06-06).statements: statement+
statement: compound_stmt | simple_stmts
……block:
| NEWLINE INDENT statements DEDENT
| simple_stmts
- ^ PEP 8 – Style Guide for Python Code - Indentation. [2020-09-26]. (
原始 内容 存 档于2018-07-13). - ^ The Python Language Reference - 2. Lexical analysis - Indentation. [2023-02-18]. (
原始 内容 存 档于2018-01-09). - ^ The Python Language Reference - 2. Lexical analysis - Keywords. [2020-09-26]. (
原始 内容 存 档于2018-01-09). - ^ What’s New In Python 3.0 - Overview Of Syntax Changes. [2023-02-18]. (
原始 内容 存 档于2012-11-02). - ^ What’s What’s New In Python 3.5 - New Keywords. [2016-06-01]. (
原始 内容 存 档于2016-06-18). - ^ What’s New In Python 3.7. [2019-11-21]. (
原始 内容 存 档于2019-11-28). - ^ The Python Language Reference - 2. Lexical analysis - Soft Keywords. [2023-03-03]. (
原始 内容 存 档于2018-01-09). - ^ PEP 8 – Style Guide for Python Code - Naming Conventions. [2017-10-06]. (
原始 内容 存 档于2018-07-13). - ^ The Python Language Reference - 2. Lexical analysis - Reserved classes of identifiers. [2023-03-03]. (
原始 内容 存 档于2018-01-09). - ^ 104.0 104.1 9.6. Private Variables. [2020-09-27]. (
原始 内容 存 档于2012-10-23). - ^ The Python Language Reference - 7. Simple statements - Augmented assignment statements. [2023-03-08]. (
原始 内容 存 档于2023-06-06). - ^ The Python Tutorial - 5. Data Structures - Tuples and Sequences. [2018-10-17]. (
原始 内容 存 档于2020-06-10). - ^ The Python Language Reference - 6. Expressions - Yield expressions. [2023-03-15]. (
原始 内容 存 档于2022-09-07). - ^ 108.0 108.1 PEP 342 - Coroutines via Enhanced Generators. [2019-11-21]. (
原始 内容 存 档于2020-05-29). - ^ The Python Language Reference - 7. Simple statements - The yield statement. [2023-03-15]. (
原始 内容 存 档于2023-06-06). - ^ PEP 380 - Syntax for Delegating to a Subgenerator. [2019-11-21]. (
原始 内容 存 档于2020-06-04). - ^ PEP 3156 – Asynchronous IO Support Rebooted: the “asyncio” Module - Coroutines. [2019-11-21]. (
原始 内容 存 档于2019-11-14). - ^ Generator-based Coroutines. [2020-10-29]. (
原始 内容 存 档于2018-12-31).Support for generator-based coroutines is deprecated and is scheduled for removal in Python 3.10.
- ^ PEP 525 – Asynchronous Generators. [2023-03-16]. (
原始 内容 存 档于2023-05-21). - ^ 114.0 114.1 The Python Language Reference - 7. Simple statements - The import Statement. [2020-10-30]. (
原始 内容 存 档于2021-02-07). - ^ 115.0 115.1 115.2 The Python Tutorial - 6. Modules. [2020-10-30]. (
原始 内容 存 档于2021-02-06). - ^ What’s New In Python 3.11 - PEP 654: Exception Groups and except*. [2023-10-20]. (
原始 内容 存 档于2023-06-13). - ^ PEP 343 – The “with” Statement. [2020-09-26]. (
原始 内容 存 档于2014-12-14). - ^ The Python Language Reference - 5. The import system - Packages. [2023-03-07]. (
原始 内容 存 档于2022-08-27). - ^ The Python Standard Library - Python Runtime Services - __main__ — Top-level code environment. [2020-10-30]. (
原始 内容 存 档于2021-02-07). - ^ 120.0 120.1 120.2 120.3 The Python Language Reference - 4. Execution model - Naming and binding. [2023-03-06]. (
原始 内容 存 档于2022-09-08). - ^ The Python Standard Library - Built-in Functions. [2020-09-25]. (
原始 内容 存 档于2012-10-25). - ^ 122.0 122.1 What’s New In Python 3.5 - PEP 465 - A dedicated infix operator for matrix multiplication. [2023-03-08]. (
原始 内容 存 档于2016-06-18). - ^ NumPy Reference - Routines - Linear algebra (numpy.linalg) - numpy.matmul. [2022-01-18]. (
原始 内容 存 档于2022-04-10). - ^ 124.0 124.1 The Python Language Reference - 6. Expressions - Comparison. [2023-03-21]. (
原始 内容 存 档于2022-09-07). - ^ The Python Language Reference - 6. Expressions - Displays for lists, sets and dictionaries. [2023-03-13]. (
原始 内容 存 档于2022-09-07). - ^ What’s New In Python 3.5 - PEP 448 - Additional Unpacking Generalizations. [2023-03-08]. (
原始 内容 存 档于2016-06-18). - ^ Hettinger, Raymond. PEP 289 – Generator Expressions. Python Enhancement Proposals. Python Software Foundation. 2002-01-30 [2012-02-19]. (
原始 内容 存 档于2020-06-14). - ^ The Python Language Reference - 6. Expressions - Parenthesized forms. [2023-03-13]. (
原始 内容 存 档于2022-09-07). - ^ The Python Language Reference - 6. Expressions - Assignment expressions. [2023-03-08]. (
原始 内容 存 档于2022-09-07). - ^ The Python Language Reference - 6. Expressions - Operator precedence. [2023-03-12]. (
原始 内容 存 档于2022-09-07). - ^ The Python Standard Library - Built-in Types - Common Sequence Operations. [2023-03-17]. (
原始 内容 存 档于2020-06-14). - ^ What’s New in Python 3.9 - Dictionary Merge & Update Operators. [2021-06-12]. (
原始 内容 存 档于2020-10-07). - ^ The Python Language Reference - 2. Lexical analysis - String literal concatenation. [2023-03-12]. (
原始 内容 存 档于2018-01-09). - ^ The Python Standard Library - Built-in Types - printf-style String Formatting. [2023-03-21]. (
原始 内容 存 档于2020-06-14). - ^ What’s New In Python 3.0 - PEP 3101: Advanced String Formatting. [2023-03-19]. (
原始 内容 存 档于2012-11-02).
The Python Standard Library - Text Processing Services - string — Common string operations - Format String Syntax. [2023-03-21]. (原始 内容 存 档于2023-06-06). - ^ The Python Language Reference - 2. Lexical analysis - Formatted string literals. [2023-03-13]. (
原始 内容 存 档于2018-01-09). - ^ PEP 498 - Literal String Interpolation. python.org. [2017-03-08]. (
原始 内容 存 档于2020-06-15). - ^ van Rossum, Guido. Tail Recursion Elimination. Neopythonic.blogspot.be. 2009-04-22 [2012-12-03]. (
原始 内容 存 档于2018-05-19).
van Rossum, Guido. Language Design Is Not Just Solving Puzzles. Artima forums. Artima. 2006-02-09 [2007-03-21]. (原始 内容 存 档于2020-01-17). - ^ returns documentation — Trampolines.
- ^ The Python Tutorial - 4. More Control Flow Tools - Defining Functions. [2023-03-06]. (
原始 内容 存 档于2023-06-10). - ^ Positional-only parameters. [2020-09-24]. (
原始 内容 存 档于2020-06-08). - ^ Python 2.4 Decorators: Reducing code duplication and consolidating knowledge. Dr. Dobb's. 2005-05-01 [2007-02-08]. (
原始 内容 存 档于2007-02-06). - ^ The Python Standard Library - Functional Programming Modules - functools — Higher-order functions and operations on callable objects. [2023-03-18]. (
原始 内容 存 档于2021-06-02). - ^ PEP 3107 -- Function Annotations. [2021-03-01]. (
原始 内容 存 档于2015-01-06). - ^ 145.0 145.1 PEP 484 -- Type Hints. [2021-03-01]. (
原始 内容 存 档于2021-02-09). - ^ PEP 3115 – Metaclasses in Python 3000. [2023-03-21]. (
原始 内容 存 档于2023-04-02). - ^ The Python Language Reference - 3. Data model - Customizing class creation. [2023-03-21]. (
原始 内容 存 档于2012-10-26).
PEP 487 – Simpler customisation of class creation. [2023-03-21]. (原始 内容 存 档于2023-03-21). - ^ The Python Standard Library - Built-in Types - Special Attributes. [2020-09-12]. (
原始 内容 存 档于2020-06-14). - ^ Why must 'self' be used explicitly in method definitions and calls?. Design and History FAQ. Python Software Foundation. [2012-02-19]. (
原始 内容 存 档于2012-10-24). - ^ The Python Standard Library - Built-in Functions - class super. [2020-09-25]. (
原始 内容 存 档于2018-10-26). - ^ Descriptor HowTo Guide. [2020-09-26]. (
原始 内容 存 档于2020-09-18). - ^ The Python Standard Library - Built-in Functions - class property. [2020-09-25]. (
原始 内容 存 档于2018-10-26). - ^ The Python Language Reference - 3. Data model - The standard type hierarchy.
- ^ The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.18. [2020-09-25]. (
原始 内容 存 档于2020-05-05). - ^ 155.0 155.1 mypy - Optional Static Typing for Python. [2017-01-28]. (
原始 内容 存 档于2020-06-06). - ^ Moshe Zadka, Guido van Rossum. PEP 237 - Unifying Long Integers and Integers. 2001-03-11. (
原始 内容 存 档于2020-05-28). - ^ The Python Tutorial - 15. Floating Point Arithmetic: Issues and Limitations. [2023-03-23]. (
原始 内容 存 档于2023-06-02).almost all platforms map Python floats to IEEE-754 “double precision”.
- ^ The Python Standard Library - Built-in Types - Ranges. [2019-10-03]. (
原始 内容 存 档于2020-06-14). - ^ NumPy fundamentals - Indexing on ndarrays - Dimensional indexing tools. [2023-03-23]. (
原始 内容 存 档于2023-06-01). - ^ The Python Standard Library - Built-in Types - The Null Object. [2023-03-24]. (
原始 内容 存 档于2023-03-24). - ^ Moshe Zadka, Guido van Rossum. PEP 238 - Changing the Division Operator. 2001-03-11 [2013-10-23]. (
原始 内容 存 档于2020-05-28). - ^ Guido van Rossum. Why Python's Integer Division Floors. 24 August 2010 [25 August 2010]. (
原始 内容 存 档于5 June 2020). - ^ Guido van Rossum. Python Reference Manual - Version 1.2 (PDF). CWI Report CS-R9525. May 1995.
The modulo operator always yields a result with the same sign as its second operand (or zero); …… The integer division and modulo operators are connected by the following identity:
x == (x/y)*y + (x%y)
. - ^ The Python Standard Library - Built-in Functions - round(), [2023-03-21], (
原始 内容 存 档于2012-10-25) - ^ Brian Kernighan, Dennis Ritchie. The C Programming Language, Second Edition (PDF). Prentice Hall. 1988 [2023-03-23]. (
原始 内容 存 档 (PDF)于2023-03-25).The relational operators group left-to-right, but this fact is not useful;
a<b<c
is parsed as(a<b)<c
, and evaluates to either0
or1
. - ^ PEP 327 – Decimal Data Type. [2015-09-26]. (
原始 内容 存 档于2020-06-04). - ^ The Python Standard Library - Numeric and Mathematical Modules - decimal — Decimal fixed point and floating point arithmetic. [2023-03-21]. (
原始 内容 存 档于2023-06-13). - ^ The Python Standard Library - Numeric and Mathematical Modules - fractions — Rational numbers. [2023-03-21]. (
原始 内容 存 档于2023-05-26). - ^ gmpy2 is an optimized, C-coded Python extension module that supports fast multiple-precision arithmetic.
- ^ 10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke. www.stat.washington.edu. [2019-02-03]. (
原始 内容 存 档于2020-05-31). - ^ Shell, Scott. An introduction to Python for scientific computing (PDF). 2014-06-17 [2019-02-03]. (
原始 内容 存 档 (PDF)于2019-02-04). - ^ The Python Standard Library. [2023-03-09]. (
原始 内容 存 档于2023-06-06). - ^ Python Interpreters Benchmarks. [2022-08-30]. (
原始 内容 存 档于2022-08-20). - ^ Python Bytecode Instructions. Docs.python.org. [2016-02-16]. (
原始 内容 存 档于2020-06-05).
Python module to generate and modify bytecode. [2023-02-22]. (原始 内容 存 档于2023-04-04). - ^ Obi Ike-Nwosu. Inside The Python Virtual Machine. [2023-01-29]. (
原始 内容 存 档于2021-01-29). version 2019-03-02 (PDF). [2023-01-30]. (原始 内容 存 档 (PDF)于2023-03-05).中 文 翻 译. [2023-01-30]. (原始 内容 存 档于2023-03-05). - ^ The Computer Language Benchmarks Game. [2023-01-31]. (
原始 内容 存 档于2023-05-22). - ^ Glossary — global interpreter lock. [2023-09-19]. (
原始 内容 存 档于2020-06-25). - ^ Codon - A high-performance, zero-overhead, extensible Python compiler using LLVM. [2023-03-24]. (
原始 内容 存 档于2023-05-25). - ^ Differences with Python.
- ^ Rachel Gordon. Python-based compiler achieves orders-of-magnitude speedups. MIT CSAIL. March 14, 2023 [2023-03-25]. (
原始 内容 存 档于2023-03-26). - ^ Pyodide is a Python distribution for the browser and Node.js based on WebAssembly. [2023-12-28]. (
原始 内容 存 档于2024-04-03). - ^
RustPython. [2022-03-04]. (
原始 内容 存 档于2022-04-24). - ^ Brython (Browser Python) is an implementation of Python 3 running in the browser. [2023-06-17]. (
原始 内容 存 档于2023-10-28). - ^ Cython Users Guide — Using Parallelism. [2023-09-19]. (
原始 内容 存 档于2023-10-11). - ^ mypyc — Compile type annotated Python to fast C extensions.
- ^ Pythran - Ahead of Time compiler for numeric kernels. [2022-08-29]. (
原始 内容 存 档于2022-08-29). - ^ Nuitka is a Python compiler written in Python. [2023-09-18]. (
原始 内容 存 档于2023-11-11). - ^ Transcrypt — Python 3.9 to JavaScript compiler - Lean, fast, open!. [2023-09-18]. (
原始 内容 存 档于2023-09-19). - ^ MyHDL - From Python to Silicon!. [2023-03-05]. (
原始 内容 存 档于2023-06-05). - ^ Pyston - A faster and highly-compatible implementation of the Python programming language. [2022-08-29]. (
原始 内容 存 档于2022-08-29).Pyston was started at Dropbox in 2014 ……. …… In 2017 …… Pyston project was shut down. …… In 2019 the Pyston developers regrouped ……. …… In mid-2021 the Pyston developers joined Anaconda …….
- ^ Pyjion - A JIT for Python based upon CoreCLR. [2022-08-29]. (
原始 内容 存 档于2022-08-29). - ^ Cinder is Meta's internal performance-oriented production version of CPython. [2022-08-26]. (
原始 内容 存 档于2021-05-04). - ^ Tool recommendations. python.org. [21 April 2022]. (
原始 内容 存 档于2022-09-06) (英 语). - ^ venv — Creation of virtual environments. [2023-05-07]. (
原始 内容 存 档于2023-06-13). - ^ virtualenv — A tool for creating isolated virtual python environments. [2023-05-07]. (
原始 内容 存 档于2023-06-11). - ^ Pipenv — Python Development Workflow for Humans. [2022-08-29]. (
原始 内容 存 档于2019-11-17). - ^ FAQ: Django appears to be a MVC framework, but you call the Controller the “view”, and the View the “template”. How come you don’t use the standard names?. [2022-09-01]. (
原始 内容 存 档于2022-09-02). - ^ PyScript is an open source platform for Python in the browser.
- ^ uvloop is a fast, drop-in replacement of the built-in asyncio event loop. [2023-03-24]. (
原始 内容 存 档于2023-05-25). - ^ Asynchronous HTTP Client/Server for asyncio and Python. [2021-01-14]. (
原始 内容 存 档于2021-01-15). - ^ PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more. [2023-03-05]. (
原始 内容 存 档于2023-06-07). - ^ Remi - Python REMote Interface library. [2022-08-28]. (
原始 内容 存 档于2022-08-28). - ^ PySimpleGUI - Python GUIs for Humans. [2022-08-28]. (
原始 内容 存 档于2022-08-28). - ^ Gooey - Turn (almost) any Python command line program into a full GUI application with one line. [2022-08-28]. (
原始 内容 存 档于2022-08-28). - ^ Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies. [2023-03-18]. (
原始 内容 存 档于2023-05-18). - ^ pywebview is a lightweight cross-platform wrapper around a webview component that allows to display HTML content in its own native GUI window. [2023-03-18]. (
原始 内容 存 档于2023-05-06). - ^ NumPy Fundamentals and usage — Broadcasting. [2023-09-20]. (
原始 内容 存 档于2022-07-03).The term broadcasting describes how NumPy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes.
- ^ CuPy: NumPy & SciPy for GPU. [2022-08-31]. (
原始 内容 存 档于2022-08-31). - ^ DataFrame. [2022-09-01]. (
原始 内容 存 档于2022-09-01).DataFrame is a 2-dimensional labeled data structure with columns of potentially different types. You can think of it like a spreadsheet or SQL table, or a dict of Series objects. It is generally the most commonly used pandas object.
- ^ Python tools for data visualization — High-level tools. [2023-09-19]. (
原始 内容 存 档于2023-09-28). - ^ Dask - Parallel computing with task scheduling. [2022-08-31]. (
原始 内容 存 档于2022-08-31). - ^ Python tools for data visualization. [2022-09-21]. (
原始 内容 存 档于2024-05-04). - ^ VisPy - interactive scientific visualization in Python. [2022-08-30]. (
原始 内容 存 档于2022-07-13). - ^ glumpy — Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization. [2023-09-18]. (
原始 内容 存 档于2023-09-19). - ^ seaborn: statistical data visualization.
- ^ Vega-Altair: Declarative Visualization in Python.
- ^ Bokeh — Interactive Data Visualization in the browser, from Python. [2023-09-19]. (
原始 内容 存 档于2023-10-12). - ^ plotly.py is an interactive, open-source, and browser-based graphing library for Python.
- ^ Dash - Analytical Web Apps for Python, R, Julia, and Jupyter. [2022-09-21]. (
原始 内容 存 档于2022-12-05). - ^ Plotly.js - Open-source JavaScript charting library behind Plotly and Dash. [2022-09-21]. (
原始 内容 存 档于2022-12-21). - ^ Panel - A high-level app and dashboarding solution for Python. [2022-09-21]. (
原始 内容 存 档于2023-01-16). - ^ HoloViz — High-level tools to simplify visualization in Python. [2023-09-19]. (
原始 内容 存 档于2023-10-11). - ^ Streamlit — The fastest way to build data apps in Python. [2022-09-21]. (
原始 内容 存 档于2023-01-17). - ^ Voilà - Voilà turns Jupyter notebooks into standalone web applications. [2022-09-21]. (
原始 内容 存 档于2022-12-31). - ^ Joblib: running Python functions as pipeline jobs. [2022-09-19]. (
原始 内容 存 档于2022-12-07). - ^ Thread-pool Controls. [2022-09-19]. (
原始 内容 存 档于2022-11-02). - ^ TensorFlow API Documentation - Module: tf. [2022-08-31]. (
原始 内容 存 档于2022-09-05). - ^ TensorFlow API Documentation - Module: tf.keras. [2022-08-31]. (
原始 内容 存 档于2020-01-22). - ^ JAX - Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more. [2022-08-28]. (
原始 内容 存 档于2021-02-05). - ^ Autograd - Efficiently computes derivatives of numpy code. [2022-08-28]. (
原始 内容 存 档于2022-07-18). - ^ XLA: Optimizing Compiler for Machine Learning. [2022-08-28]. (
原始 内容 存 档于2022-09-01). - ^ PEG parser generator for Python. [2023-02-22]. (
原始 内容 存 档于2023-03-05).
Pablo Galindo Salgado. Guide to the Parser. [2023-02-22]. (原始 内容 存 档于2023-05-24).
Bryan Ford. The Packrat Parsing and Parsing Expression Grammars Page. [2023-04-18]. (原始 内容 存 档于2023-06-02). - ^ PeachPy - Portable Efficient Assembly Code-generator in Higher-level Python. [2023-04-04]. (
原始 内容 存 档于2023-04-04). - ^ llvmlite — A lightweight LLVM python binding for writing JIT compilers.
- ^ SimPy — Discrete event simulation for Python. [2023-08-17]. (
原始 内容 存 档于2016-12-12). - ^ PyOpenGL is the most common cross platform Python binding to OpenGL and related APIs. [2022-01-07]. (
原始 内容 存 档于2011-06-15). - ^ ModernGL - Modern OpenGL binding for python. [2022-01-07]. (
原始 内容 存 档于2022-04-15). - ^ CUDA Python Manual. [2022-08-30]. (
原始 内容 存 档于2022-08-30). - ^ PyCUDA gives you easy, Pythonic access to Nvidia’s CUDA parallel computation API. [2022-05-29]. (
原始 内容 存 档于2022-06-28). - ^ PyOpenCL gives you easy, Pythonic access to the OpenCL parallel computation API. [2021-07-29]. (
原始 内容 存 档于2022-03-08). - ^ PySPH — A framework for Smoothed Particle Hydrodynamics in Python. [2023-12-26]. (
原始 内容 存 档于2023-12-26). - ^ Vulkan Kompute: Blazing fast, mobile-enabled, asynchronous, and optimized for advanced GPU processing usecases. [2023-02-10]. (
原始 内容 存 档于2023-03-05). - ^ Taichi — High-performance parallel programming in Python.
- ^ Graphene — GraphQL framework for Python. [2023-12-20]. (
原始 内容 存 档于2024-04-28). - ^ GQL — A GraphQL client in Python. [2023-12-25]. (
原始 内容 存 档于2024-04-24). - ^ Pillow: a modern fork of PIL. [December 8, 2013]. (
原始 内容 存 档于2016-04-27). - ^ pypdf - A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. [2023-02-24]. (
原始 内容 存 档于2023-04-10). - ^ PyFilesystem2 — Python's Filesystem abstraction layer. [2023-10-10]. (
原始 内容 存 档于2023-10-13). - ^ Fabric - Pythonic remote execution. [2013-04-08]. (
原始 内容 存 档于2014-04-11). - ^ Prefect - The easiest way to coordinate your dataflow. [2022-09-22]. (
原始 内容 存 档于2023-01-11). - ^ SDL Language Bindings. [2022-02-16]. (
原始 内容 存 档于2019-03-12). - ^ Arcade — Easy to use Python library for creating 2D arcade games. [2023-10-10]. (
原始 内容 存 档于2023-11-08). - ^ Pymunk is a easy-to-use pythonic 2d physics library that can be used whenever you need 2d rigid body physics from Python.
- ^ Panda3D Manual. [2022-09-04]. (
原始 内容 存 档于2018-12-29). - ^ pythonnet - Python.NET. [2022-08-30]. (
原始 内容 存 档于2022-09-01). - ^ PyInstaller bundles a Python application and all its dependencies into a single package. [2021-03-13]. (
原始 内容 存 档于2021-06-07). - ^ LSB — Runtime Languages — Python Interpreter. [2023-06-16]. (
原始 内容 存 档于2016-05-01). - ^ pipx — Install and Run Python Applications in Isolated Environmentspipenv. [2023-05-07]. (
原始 内容 存 档于2023-06-05). - ^ XONSH is a Python-powered shell. [2022-08-28]. (
原始 内容 存 档于2022-09-03). - ^ Data Mining Fruitful and Fun - Open source machine learning and data visualization. Build data analysis workflows visually, with a large, diverse toolbox.. [2023-06-14]. (
原始 内容 存 档于2023-06-06). - ^ Mayavi: 3D scientific data visualization and plotting in Python. [2023-09-20]. (
原始 内容 存 档于2023-10-11). - ^ Ray - Effortlessly scale your most complex workloads. [2022-09-19]. (
原始 内容 存 档于2022-12-13). - ^ Kornia - Open Source Differentiable Computer Vision Library. [2022-09-22]. (
原始 内容 存 档于2023-01-10). - ^ spaCy: Industrial-strength NLP. [2023-09-22]. (
原始 内容 存 档于2023-10-11). - ^ Argos Translate — Open-source offline translation library written in Python. [2023-10-01]. (
原始 内容 存 档于2023-11-13). - ^ Generative Models by Stability AI. [2023-10-14]. (
原始 内容 存 档于2023-11-11). - ^ CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image. [2023-10-18]. (
原始 内容 存 档于2023-09-05). - ^ Transformers — State-of-the-art Machine Learning for PyTorch, TensorFlow, and JAX. [2023-10-19]. (
原始 内容 存 档于2023-09-27). - ^ Gradio: The New Frontier in Interactive Python Data Apps. [2023-12-22]. (
原始 内容 存 档于2023-12-22). - ^ Python library for easily interacting with trained machine learning models https://pypi.org/project/gradio/ (页面
存 档备份,存 于互联网档案 馆) - ^ Buniatyan, Davit. Code Understanding Using LangChain. Activeloop. 2023 [2023-12-22]. (
原始 内容 存 档于2023-12-16). - ^ 272.0 272.1 TIOBE Index. TIOBE - The Software Quality Company. [2021-10-06]. (
原始 内容 存 档于2020-06-14). - ^ Python Discord is a large community focused around the Python programming language. [2021-01-13]. (
原始 内容 存 档于2021-02-01). - ^ Gotchas for Python Users. boo.codehaus.org. Codehaus Foundation. [2008-11-24]. (
原始 内容 存 档于2008-12-11). - ^ Esterbrook, Charles. Acknowledgements. cobra-language.com. Cobra Language. [2010-04-07]. (
原始 内容 存 档于2008-02-08). - ^ Coconut — Simple, elegant, Pythonic functional programming.
- ^ Proposals: iterators and generators [ES4 Wiki]. wiki.ecmascript.org. [2008-11-24]. (
原始 内容 存 档于2007-10-20). - ^ Strachan, James. Groovy – the birth of a new dynamic language for the Java platform. 2003-08-29 [2007-06-11]. (
原始 内容 存 档于2007-04-05). - ^ Jalan, Nishant Aanjaney. Programming in Kotlin. CodeX. 2022-11-10 [2024-04-29] (
英 语). - ^ The Mojo Programming Language. github.com. Modular. 2023 [2023-09-26]. (
原始 内容 存 档于2023-10-25).Mojo is still young, but it is designed to become a superset of Python over time.
- ^ Yegulalp, Serdar. Nim language draws from best of Python, Rust, Go, and Lisp. InfoWorld. 2017-01-16 [2020-09-13]. (
原始 内容 存 档于2018-10-13).Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed).
延伸 閱讀
[编辑]- John DeNero. Composing Programs, a free online introduction to programming and computer science. [2020-10-09]. (
原始 内容 存 档于2021-01-28). - Allen B. Downey. Think Python: How to Think Like a Computer Scientist - 2e. Green Tea Press. 2012 [2023-01-29]. ISBN 978-1-491-93936-9. (
原始 内容 存 档于2023-06-04). - Obi Ike-Nwosu. Intermediate Python. [2023-01-29]. (
原始 内容 存 档于2023-03-05). - Luciano Ramalho. Fluent Python (2nd ed.). O'Reilly Media. 2022 [2023-01-30]. ISBN 978-1-4920-5632-4. (
原始 内容 存 档于2023-03-05).
参 閲
[编辑]外部 連接
[编辑]官 方 网站- Awesome Python (页面
存 档备份,存 于互联网档案 馆) - Real Python Tutorials (页面
存 档备份,存 于互联网档案 馆) - programingz - Learn Python Programming (页面
存 档备份,存 于互联网档案 馆) - w3schools - Python Tutorial (页面
存 档备份,存 于互联网档案 馆) - ItsMyCode- Learn Python Programming (页面
存 档备份,存 于互联网档案 馆) - Codecary - Learn Python Programming (页面
存 档备份,存 于互联网档案 馆) - dainikchorcha - Learn Python Programming(页面
存 档备份,存 于互联网档案 馆) - Tutlane - Learn Python Online (页面
存 档备份,存 于互联网档案 馆) - Brmgha - Learn & Challenges Python Online (页面
存 档备份,存 于互联网档案 馆) - AlmaBetter- Python Tutorial (页面
存 档备份,存 于互联网档案 馆)