Python 函数进阶:参数、作用域与闭包

前言 函数是 Python 的乐高积木。参数传递的几种形态、作用域查找规则、闭包——这三块搞明白,写函数式风格的代码就通了。 一、参数的四种形态 def connect(host, port=5432, *, timeout=3, **extra): print(f"{host}:{port} timeout={timeout} extra={extra}") # 1. 位置参数:按顺序传 connect("db.local") # 2. 关键字参数:指名道姓传(推荐, 可读性好) connect(host="db.local", port=5433) # 3. 仅关键字参数(* 之后的必须用关键字) connect("db.local", 5433, timeout=10) # 4. 可变参数 def add(*args, **kwargs): # args 收集多余位置参数为 tuple, kwargs 收集关键字为 dict print(args, kwargs) add(1, 2, 3, debug=True) # (1, 2, 3) {'debug': True} # 反向解包:调用时把序列/字典摊开 args = ("db.local", 5433) connect(*args) ⚠️ 默认参数的头号大坑——可变默认值: ...

2023-10-21 · 3 min · zy