主题
函数
函数使用 def 定义。参数与返回值注解用于表达契约;它们默认不执行运行时校验。
py
def greet(name: str, *, polite: bool = True) -> str:
"""返回问候语。"""
prefix = "您好" if polite else "嗨"
return f"{prefix},{name}!"* 后的参数必须以关键字传入,适合容易混淆的可选项。可变位置参数使用 *args,可变关键字参数使用 **kwargs;仅在需要转发或接收开放参数集时使用。
默认值与可变对象
默认参数在函数定义时只计算一次,因此不能使用可变对象作为默认值:
py
def append_item(item: str, items: list[str] | None = None) -> list[str]:
if items is None:
items = []
items.append(item)
return items参数传递
Python 传递的是对象引用绑定。函数可修改传入的可变对象,但重新绑定局部参数不会改变调用方的名称。需要避免副作用时,接收不可变类型、返回新对象,或在函数内复制。
