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()