def

def 语句是定义函数的语句。语法如下:

@assignment_expression
def funcname(parameter_list) -> expression:
    suite

其中的装饰器 @assignment_expression,形参 parameter_list 和标注 -> expression 是可选项。

函数定义是一条可执行语句。它执行时会将函数名称 funcname 绑定到一个函数对象(函数可执行代码的包装器)。

例如,用必选项定义一个什么也不做的函数如下:

def f():
    pass

f
<function __main__.f()>

一个函数定义可以被一个或多个装饰器表达式所包装。

装饰器必须是可调用对象,它会以该函数对象作为唯一参数被发起调用。

其返回值将被绑定到函数名称。多个装饰器会以嵌套方式被应用。

@str
@type
def f():pass
f
"<class 'function'>"

大致相当于:

def f():pass
f = str(type(f))
f
"<class 'function'>"

函数形参 parameter_list 详见 函数形参

函数标注 -> expression 可以是任何表达式,标注对提高代码的可读性非常有用,看标注而不需要看代码上下文就大概知道代码的使用。例如:

# 标注函数的参数和返回值类型
def f(arg:int) -> list:
    return list(str(arg))
f(123)
['1', '2', '3']