语法糖(Syntactic Sugar)由 Peter J. Landin 提出,指解释器自动转换为等价原生代码的简化语法;Python 的推导式、装饰器、海象运算符等均属此类,不增加新功能,仅让代码更简洁易读。

什么是语法糖

语法糖 = 编译器/解释器自动做等价转换:语法糖代码在执行前被翻译为原生等价代码,运行时逻辑与效率完全一致,即 简化写法 ≠ 新功能 ≠ 性能优化。

核心价值:

  1. 减少冗余的样板代码
  2. 让代码逻辑更直观
  3. 降低手写出错概率

核心高频语法糖

语法糖示例等价代码
推导式[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)函数内判断赋值

示例

# 推导式
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)

相关笔记