张芷铭的个人博客

Python 语法糖由解释器动态转换,零性能损耗,不增加新功能,仅简化代码。

核心高频语法糖

语法糖示例等价代码
推导式[i*2 for i in range(10)]for 循环 + append
三元表达式val = a if cond else b完整 if-else 分支
算术运算符a += ba = a + b
装饰器@staticmethodfunc = decorator(func)
f-stringf"name: {var}""name: {}".format(var)
in 成员判断x in list底层迭代遍历
解包语法func(*args, **kwargs)手动遍历传参

次要常用语法糖

语法糖示例说明
海象运算符if (n := len(lst)) > 10赋值并判断,一行省两行
切片语法lst[1:5:2]调用 __getitem__(slice)
星号生成序列[*range(5)]等价 list(range(5))
上下文管理器with open(...) as f自动 try-finally
默认参数def func(a=10)函数内判断赋值

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 推导式
squares = [x**2 for x in range(10)]

# 三元表达式
status = "成年" if age >= 18 else "未成年"

# 解包
a, *rest = [1, 2, 3, 4]  # a=1, rest=[2,3,4]

# 海象运算符
while (line := file.readline()):
    process(line)

Comments