def minmax(lst): return min(lst), max(lst) # 返回 tuplelo, hi = minmax([3, 1, 4, 1, 5])# 提前返回def find(lst, target): for i, v in enumerate(lst): if v == target: return i return -1
Lambda
add = lambda a, b: a + badd(1, 2) # 3# 常用于排序和高阶函数nums = [3, 1, 4, 1, 5]sorted(nums, key=lambda x: -x)list(map(lambda x: x**2, nums))list(filter(lambda x: x > 2, nums))
作用域与闭包
# LEGB 规则:Local → Enclosing → Global → Built-inx = 10def outer(): x = 20 def inner(): nonlocal x # 修改外层变量 x = 30 inner() print(x) # 30outer()print(x) # 10# global 关键字count = 0def increment(): global count count += 1# 闭包:内层函数捕获外层变量def make_adder(n): def adder(x): return x + n return adderadd5 = make_adder(5)add5(3) # 8
高阶函数
from functools import reducelist(map(str, [1, 2, 3])) # ['1','2','3']list(filter(lambda x: x > 0, [-1,0,1])) # [1]reduce(lambda a, b: a + b, [1,2,3,4]) # 10
functools 工具
from functools import lru_cache, partial, wraps# 记忆化缓存@lru_cache(maxsize=128)def fib(n): if n < 2: return n return fib(n-1) + fib(n-2)fib.cache_info() # 查看缓存命中率# 固定部分参数def power(base, exp): return base ** expsquare = partial(power, exp=2)square(5) # 25
类型注解
def add(a: int, b: int) -> int: return a + bdef greet(name: str, times: int = 1) -> list[str]: return [f"Hello, {name}!"] * times