函数

一、函数的定义与调用

  1. 使用def关键字定义函数。

  2. 调用函数:通过函数名和括号来调用函数,括号内传入实际参数。

def 函数名(参数列表):
    """文档字符串(可选)"""
    # 函数体
    return 返回值  # 可选

示例:

def greet(name):
    """向指定名字的人问好"""
    print(f"Hello, {name}!")
    
# 调用函数
greet("Alice")  # 输出:Hello Alice

二、参数类型

  • 必选参数(Positional Arguments):参数按定义时的顺序传递。

def introduce(name, age):
    print(f"I'm {name}, {age} years old.")

introduce("Bob", 25)  # 正确
# introduce(25, "Bob") # 逻辑错误,但语法正确
  • 关键字参数:通过参数名=值的形式传递参数,顺序无

  • 默认参数:在定义函数时为参数指定默认值。默认参数必须放在非默认参数之后。

  • 可变参数:使用*args接收任意数量的位置参数,args是一个元组。

  • 可变关键字参数:使用**kwargs接收任意数量的关键字参数,kwargs是一个字典。

  • 参数组合顺序:定义函数时,参数的顺序必须是:def func(位置参数, *args,默认参数, **kwargs)

三、返回值

  • 使用 return 语句返回值。

  • 函数可以返回单个值、多个值(实际上是返回一个元组)、或不返回任何值(隐式返回 None)。

  • return 会立即结束函数执行。

四、作用域(Scope)

Python 遵循 LEGB 规则来查找变量:

  • Local:函数内部

  • Enclosing:外层函数

  • Global:全局作用域

  • Built-in:内置作用域

global 和 nonlocal 关键字

  • global:在函数内部修改全局变量。

  • nonlocal:在嵌套函数中修改外层函数的变量。

五、匿名函数(Lambda)

使用lambda关键字创建小型匿名函数。

六、高阶函数

函数可以作为参数传递给其他函数,或作为返回值返回。

七、装饰器(Decorator)

装饰器是一种特殊类型的函数,它可以修改其他函数的功能。

  • 带参数的装饰器(多层嵌套)

八、文档字符串(Docstring)

使用三重引号 """ 编写函数的文档,可通过 help().__doc__ 查看。

九、函数注解(Type Hints)

为参数和返回值提供类型提示,提高代码可读性和可维护性。

最后更新于