Python 语法糖案例
下面这段代码集中演示常见语法糖,可以直接复制到 .py 文件中运行。
def trace(func):
def wrapper(*args, **kwargs):
print(f"call {func.__name__}")
return func(*args, **kwargs)
return wrapper
@trace
def greet(name):
return f"hello {name}"
def main():
billion = 10_0000_0000
print("big int:", billion == 10**9)
a, b = 1, 2
a, b = b, a
print("swap:", a, b)
score = 95
print("chain compare:", 90 <= score <= 100)
numbers = [1, 2, 3, 4]
print("list comprehension:", [x + 233 for x in numbers])
print("dict comprehension:", {x: x * x for x in numbers})
print("set comprehension:", {x % 3 for x in numbers})
print("generator expression:", sum(x * x for x in numbers))
age = 20
print("ternary:", "adult" if age >= 18 else "child")
first, *middle, last = [1, 2, 3, 4]
print("star unpack:", first, middle, last)
def add(a, b):
return a + b
print("args unpack:", add(*[10, 20]))
print("kwargs unpack:", add(**{"a": 10, "b": 20}))
base = {"host": "localhost", "port": 3306}
override = {"port": 3307, "user": "root"}
print("dict merge:", base | override)
text = "python"
if (length := len(text)) > 5:
print("walrus:", length)
command = ("move", 10, 20)
match command:
case ("move", x, y):
print("match:", x, y)
case _:
print("match: unknown")
print(greet("Tom"))
if __name__ == "__main__":
main()