函数python函数组成:

定义语句,函数名,参数列表,代码块

函数作用:

将一段功能代码封装起来,便于复用.

代码更加简洁.

函数的分类:

內建函数: 如,max()等

库函数: 如,math.ceil()等

函数的定义:

def语句定义函数(定义后的函数才能使用)

def functionNAME([args_list]):

代码块

[return value]

函数名的规范和标识符规范相同.

缩进约定为4个空格

return语句可省略,但其默认返回值是None

例:

def fn(x):

return x

函数的调用:

通过函数名来调用此函数,functionNAME([args_list])

函数时可调用的对象,callable()函数检查此对象是否可调用

例:

fn(1)

参数

形参: 函数定义时所使用的参数

实参: 函数调用时所使用的参数

传参: 实参根据形参的匹配规则,逐一传递给形参

参数默认值: 定义时,在形参后跟上一个值(可变参数无默认值)

作用:

当实参未给足时,对没有给定的参数赋值为默认值

参数过多,简化函数调用

形参有:

位置参数、可变位置参数、可变关键字参数、keyword-only参数

实参有:

位置参数、关键字参数

形参:

位置参数,可接受一个实参,根据实参传递的顺序从左至右依次匹配

表示方式: 参数名,例: def fn(x)

可变位置参数,可接受任意个位置实参(包括0个),在位置参数被取完后,其余都被其接收

表示方式: '*'号后跟参数名,例: def fn(*args)

将一组位置参数形成一个tuple

可变关键字参数,可接受任意个关键字实参(包括0个),在关键字参数被取完后,其余都被其接收

表示方式: '**'号后跟参数名,例: def fn(**kwargs)

将一组关键字参数形成一个字典

keyword-only参数,在可变位置参数之后的普通参数,可接受一个实参,按左右顺序与实参匹配

表示方式:

1.'*', 后跟普通参数

例: def fn(*,x,y) , x和y是keyword-only参数

2.可变位置参数后跟普通参数

例: def fn(*args,x,y) , x和y是keyword-only参数

实参:

位置参数: 可以是集合对象,可迭代对象,可看做一个整体的单个对象.例: (1,2),{1,2},[1,2],list(range(1,3)),1

关键字参数: name = value 格式的参数.例: 'a' = 1

形参定义顺序规则:

位置参数 --> 位置参数(含默认值) --> 可变位置参数 --> keyword-only参数 --> keyword-only参数(含默认值) --> 可变关键字参数

传参顺序:

位置参数 --> 关键字参数

实参与形参匹配规则:

位置实参传递时,形参从左至右依次匹配

关键字实参传递时,形参根据关键字来匹配,跟顺序无关

动态语言和静态语言函数定义上的区别:

动态语言的函数的形参是没有类型的,因此在传递实参时,不会报错.

而静态语言的函数的形参是有类型的,因此在传递实参时,会直接报错.

参数解构(实参的解构)解构对象

集合类型

可迭代对象

解构符号*和**

*将非字典类型的解构对象解构成位置参数

**将字典类型的解构对象解构成关键字参数

提取出来的实参个数要与形参个数能匹配,实参类型得匹配