函数
函数的定义:
def 函数名(形参列表)
语句块
作用:
创建一个函数,把函数内的语句块打包为一个函数,用函数名绑定
函数的调用:
函数名(实参列表)
函数说明:
函数内的变量是局部变量,在函数外部无法访问
函数内部可以访问函数外部的变量,但不能修改函数外部变量的绑定关系
如:
x=0
def myadd(a,b):
x=a+b
print(x)
myadd(100,200)
print(x) # x=0
return语句:
语法:
return [表达式]
注:[]可以省略
作用:用于函数中,结束当前函数的执行,返回到调用该函数的地方,
同时返回表达式的引用关系
说明:return语句后的表达式可省略,省略后相当于return None,如果函数内没有return语句,
则函数执行完最后一条语句后返回None,相当于在最后加了一条return None语句
例:写一个函数mymax(),实现返回两个个数的最大值
def mymax(a,b):
if a>b:
return a
else:
return b
print(mymax(100,200)) # 200
print(mymax("ABC","ACB")) # ACB
函数的参数传递
传递方式:
1.位置传参
序列传参
2.关键字传参
字典关键字传参
位置传参:
实际传递参数(实参)与形式参数(形参)的对应关系按位置来依次对应
序列传参:
函数在调用过程中用”*”将序列拆解后,按位置进行传递的方式
关键字传参:
按照形参的名称给形参赋值,实参和形参按名称进行匹配
字典关键字传参:
实参为字典,将字典用”**”拆解后,再用关键字传参
说明:字典的键名和形参名必须一致
字典的键名必须为字符串(必须为标识符规则)
字典的键名要在形参中存在
函数的综合传参:
函数的传参方式在能确定形参能唯一匹配到实参的情况下可以任意组合
要求:
位置传参在前,关键字传参在后
示例:def myfun(a,b,c):
myfun(1,b=1,c=2) # True
myfun(b=1,a=2,3) #False 关键字传参要放到位置传参后面
myfun(100,*[200,300]) #True
myfun(*’AB’,**{‘c’:1}) # True
函数的缺省参数
语法:
def 函数名(形参名1=默认实参1,形参名2=默认实参2,….)
说明:
1.缺省参数必须自右至左依次定义,如果一个参数有缺省参数,则其右侧的所有参数
都必须有缺省参数
def f(a=1, b, c=3): # 错误
2.缺省参数可以有0个或多个,甚至全部都是缺省参数
函数形参的定义方式:
位置形参
星号元组形参
命名关键字形参
双星号字典形参
位置形参:
语法:
def 函数名(形参名1,形参名2,...):
语句块
星号元组形参:
语法:
def 函数名(*元组形参名):
语句块
作用:收集多余的位置传参
命名关键字形参
语法:
def 函数名(*,命名关键字形参)
语句块
或
def 函数名(*args,命名关键字形参)
语句块
作用:强制所有的传参都必须用关键字传参
如:print(*args,sep=’,’end=’\n’)中的后两个参数
sorted(reverse=True)
示例:
def fa(a,b,*,c,d):
print(a,b,c,d)
fa(1,2,3,4) #错误
fa(100,200,c=300,d=400) #正确
双星号字典形参
语法:
def 函数名(**字典形参名):
语句块
作用:收集多余的关键字传参
函数的参数说明:
位置形参,星号元组形参,命名关键字形参,双星号字典形参,缺省参数可以混合使用
函数参数自左至右的顺序依次为:
位置形参 星号元组形参 命名关键字形参 双星号字典形参
示例:
def fn(a, b, *args, c, d, **kwards):
pass
fn(1,2,3,4, c=100, d=200, e=300, f=400)