1.5.1 函数定义与返回值与文档注释
def fun(): """ 这是一个文档注释,书写文档注释的位置为 函数头下面的 首行""" print("this is a self-define function") return
python的自定义函数如上,可以自定义有参函数和无参函数。
函数的返回值:python是一门弱类型语言,并没有硬性规定函数的返回值类型,因此函数可以返回:单个对象、多个对象、表达式、None。函数若没有return ,则返回默认值 None。
函数的文档注释可以通过 __doc__ 属性获取,如:fun.__doc__
1.5.2 函数的类型标注
python是弱类型语言,对变量的类型不强制要求,但是如果要强制规定一个变量的类型,则可以使用类型标注:a : int = 3306,依旧可以执行,只是会在IDE中做出提醒。
可以对 函数的参数类型以及返回值类型 进行限制。
from typeing import List, Iterable # 类型标注,要求函数的返回值为 元组 类型 def fun() -> Tupe : print("hello") return (1,) #单个元素的元组,必须有 逗号
1.5.3 函数参数的传递
python中,函数的参数传递的时候,实际传递的实参的地址,但是,当实参为不可变类型,函数内实参的改变不影响外部实参;当实参为可变类型,函数内实参的改变影响外部实参。
1.5.4 函数参数的类型
函数的形参分为:必须参数和默认参数,且顺序为:先必须参数再默认参数;(函数在定义的时候,一个参数,要么设置默认值,要么在调用的时候传递实参。因此分为 必须参数和默认参数)
函数的实参分为:位置参数和关键字参数,且顺序为:先位置参数再关键字参数;(函数在实际调用传参的时候,要么按照形参的先后顺序直接传参数值,要么任意顺序传递实参加上实参名。因此分为 位置参数和关键字参数)
不定长位置参数:*args,接收[0, +∞) 个位置参数,打包成一个元组,如果没有接收到实参,则为空元组。
不定长关键字参数:**kvargs,接收[0, +∞) 个关键字参数,打包成一个字典,如果没有接收到实参,则为空字典。
特殊参数:/ *
/ :要求 / 前面的实参只能是位置参数;
* :要求 * 后面的实参只能是关键字参数;
二者之间随意。
#以内置函数max()为例:
函数的参数:[ ] 表示可选可不选,* 表示0个或无穷个。
例如:python的max函数定义:max(iterator, *[, key, default]) 或者 max(arg1, arg2, *args[, key]): 【key指定了max函数中的每个元素的比较规则。】
解析:对于max函数参数的第一种定义方式:[]表示可选参数,* 表示特殊参数,*后面直接连着[]:限制后面的可选参数在调用的时候必须通过 关键字参数kv的方式调用;
对于max函数参数的第二种定义方式:*后面是一个变量,表示不定长必须参数,(arg1, arg2, *arg)表示max接收 [2, +∞) 个参数,[, key] 表示key参数可选。