函数
函数就是实现了一定功能的代码块。
#函数的定义
def calc(x,y):
"用于说明函数"
res = x * y
return res
#函数的调用
print(calc(1,2))
def 定义函数,calc函数名,x,y参数,没有定义函数的返回值,则会返回None。
返回多个值是,会将返回的值写入到一个元组中,然后将元组返回。
"""
形参只有在被调用时才分配内存,调用结束后。即刻释放所分配的内存单元,因此,形参只有在函数内部有效
函数调用结束后则不能在使用该形参变量。
实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须有确定的值。
以便把这些值传给形参,因此应预先用赋值,输入等办法使参数获得确定值。
位置参数和关键字(标准调用:实参和形参一一对应;关键字调用:位置无需固定)
位置参数:
test(1,2,3)
关键字:
test(x=1,z=3,y=2)
混合:位置参数必须在混合参数左边
test(1,3,z=2)
默认参数
参数组:**字典 *列表
"""
def calc(x,y):
res = x * y
return res
print(calc(1,2))
def test(x,y,z):
print(x,y,z)
test(1,2)#报错,x=1.y=2,z无赋值,缺少一个赋值。
test(1,2,3)#位置参数必须一一对应,缺一不可。
test(x = 1,z = 2,y = 3)#关键字,不需要一一对应,缺一不可。
test(1,2,z = 3)#混用的情况,位置参数必须在关键字参数之前。
test(1,2,y = 3)#x=1,y=2,y=3,给y值赋予了多个值,未给z赋值。
test(1,2,y=3,z=2)#y=2,y=3,给y赋予了多个值。
def handle(x,type="string"):#默认参数,若执行时未给type赋值,默认type的值为string
print(x)
print(type)
handle(1 ,'a')#会将a付给type。
#参数组:*列表 不论传什么类型,多少个值,都会将其以元组的方式赋值。
def test(x,*args):
print(x)
print(args)
test(1,2,3,4,5,6)
test(1,[1,2,3])#会将[1,2,3]作为一个整体数据传给args,成为args的一个元素。
test(1,{"x" : 1 ,"y" : 2})#会将{"x" : 1 ,"y" : 2}作为一个参数传递给args。
test(1,*[1,2,3])#如果要列表中的元素作为每一个元素存进args,必须标记*
test(1,*{"x" : 1 ,"y" : 2})#会遍历{"x" : 1 ,"y" : 2}传递给args,因为默认遍历获取的为字典的key,所以会将每个元素的key作为一个元素存入args元组。
#想向函数内传递不确定数量的值,参数必须为可扩展性参数。
def test(x,y):
print(x)
print(y)
test(1,*(1,2,3,4))
#**kwargs 字典
def test(x,**kwargs):
print(x)
print(kwargs)
test(1,y = 2,z = 3)
def test(x,*args,**kwargs):
print(x)
print(args)
print(kwargs)
test(1,2,3,4,y = 2 ,z = 3)
test(1,*(1,2,3,4),**{ "z" : 2})