定义:函数是可以重复执行的语句块,可以重复的调用。
作用:用于封装语句块,提高代码的重用性,定义用户级别的函数。
一.定义函数语法
def 函数名(形参列表):
语句块(代码块)
作用:用语句块创建一个函数,并用函数名变量绑定这个函数。
语法说明:
1)函数名是变量,它用于绑定语句块。
2)函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量。(要让函数处理外部的数据需要用参数给函数传入一些数据)。
3) 函数不需要传入参数时,形参列表可以为空。
4)语句部分不能为空,如果为空需要填充pass语句。
二.函数调用
函数名(实际调用传递参数)
注: 实际调用传递参数可以称为实参。
说明:
函数调用是一个表达式
如果函数内部没有return语句,则函数执行完毕后返回None对象。
三.return语句介绍
语法:
return [表达式]
注: []代表可以省略其中的内容
作用:
用于函数中结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系。
return 语句说明:
1.)return 语句后跟表达式可以省略,省略后相当于 return None.
2.)如果函数内没有 return 语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句).
四.函数传参介绍
传递方式有四种:位置传参,序列传参,关键字传参,字典关键字传参。
1)位置传参
实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的.
说明:
实际参数和形式参数通过位置进行传递和匹配。
实际参数的个数必须与形式参数的个数相同,不然报错。
2) 序列传参
序列传参是指在函数调用过程中,用*将序列拆解后按位置进行传递的传参方式。
说明:
序列传参时,序列拆解的位置将与形参一一对应。
序列的位置信息对应相应的参数位置。
3)关键字传参
关键字传参是指传参时,按着形参的名称给形参赋值。
实参和形参按名称进行匹配。
说明
实参和形参按着形参名进行匹配,可以不按位置进行匹配。
4)字典关键字传参
是指实参为字典,将字典用 ** 拆解后进行关键字传参的方式。
说明
字典的键名和形参名一致。
字典的键名必须为字符串(且为标识符的命名方式)。
字典的键名要在形参中存在。
5)函数的综合传参
函数的传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合
函数的位置传参要先于关键字传参。
位置传参和序列传参可以混合使用且可以顺序颠倒
函数的关键字传参和字典关键字传参可以混合使用,且可以顺序颠倒
位置传参和关键字传参可以混合使用,但位置传参要先于关键字传参
五.函数的缺省参数
语法:
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, … ):
语句块
说明
缺省参数必须自右至左依次存在.如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
缺省参数可以有0个或多个,甚至全部都有缺省参数。
def fn(a, b=10, c): # 错的
pass
def fn(a=100, b=200, c=300): # 对的
pass
六.函数形参的定义方式
四种定义方式:位置形参,星号元组形参,命名关键字形参,双星字典形参。
1)位置形参
def 函数名(形参名1, 形参名2, …):
语句块
2)星号元组形参
def 函数名(*元组形参名):
语句块
作用: 收集多余的位置传参。
说明: 元组形参名一般命名为’args’。
3)命名关键字形参
def 函数名(*, 命名关键字形参):
语句块
或
def 函数名(*args, 命名关键字形参):
语句块
作用:强制所有的参数都必须用关键字传参或字典关键字传参。
4)双星号字典形参
def 函数名(**字典形参名):
语句块
作用:收集多余的关键字传参。
说明:字典形参名一般命名为 kwargs。
5)函数的参数说明
位置形参,缺省参数,星号元组形参,双星号字典形参等可以混合使用.
函数参数自左至右的顺序为:
1. 位置形参
2. 星号元组形参
3. 命名关键字形参
4. 双星号字典形参
努力做事只能把事情做对,用心做事才能把事情做好!