Skip to content

函数

函数使用 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 传递的是对象引用绑定。函数可修改传入的可变对象,但重新绑定局部参数不会改变调用方的名称。需要避免副作用时,接收不可变类型、返回新对象,或在函数内复制。

参考

基于 MIT 许可发布