1 文档字符串
函数定义下的第一个字符串是文档字符串,用于解释函数。可以通过 help(function_name)
或 function_name.__doc__
来查看。
2 函数返回
- 单个返回值:
return
一个值 - 无返回值:函数执行完毕没有
return
语句,或者return
后面没有值,会隐式地返回None
- 返回多个值:实际上是返回一个包含所有值的 元组 (
tuple
)
3 参数
函数声明:使用 def
关键字来创建函数
- 默认参数值只在函数定义时计算一次
*args
( 位置可变参数 ):将传入的多个位置参数打包成一个 元组 (tuple
)**kwargs
( 关键字可变参数 ):将传入的多个关键字参数打包成一个 字典 (dictionary
)- 带有默认值的参数必须放在没有默认值的参数之后
- 仅限位置参数 ( Positional-Only Parameters ) 必须放在所有其他参数类型之前
- 仅限关键字参数 ( Keyword-Only Parameters ) 必须在
*
或*args
之后 - 可变位置参数 (
*args
) 仅限关键字参数和**kwargs
之前 - 可变关键字参数 (
**kwargs
) 必须是函数签名中的最后一个参数
函数调用:使用函数名加上括号 ()
来执行函数
- 调用时一旦开始使用关键字参数,就不能再提供任何位置参数了
4 函数注解
Python3支持类型注解,但不强制类型检查
def add(a: int, b: int) -> int:
return a + b
5 作用域与命名空间 ( Scope & Namespace
)
python
是函数级作用域而非块级作用域,这决定了变量在何处是可见和可访问的。Python
遵循 LEGB
规则 查找变量:
L ( Local
):函数内部的本地作用域。
E ( Enclosing
):嵌套函数中,外部(非全局)函数的作用域。
G ( Global
):模块顶层的全局作用域。
B ( Built-in
):Python
内置的名称,如 print
, len
等。
6 其它函数
- 高阶函数:函数可以作为参数传递或作为返回值的函数
Lambda
函数(匿名函数):常与map()
filter()
sorted()
等高阶函数结合使用- 装饰器函数:装饰器是修改其他函数行为的函数
- 生成器函数:使用
yield
关键字返回生成器: - 递归函数:函数调用自身