函数 对象 模块
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
调用函数时,如果没有传递参数,则会使用默认参数。
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数。加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。加了两个星号 ** 的参数会以字典的形式导入。
>>> def printme(str): #str是必需参数
print(str)
return
>>> printme() #不传入参数会报错
TypeError: printme() missing 1 required positional argument: 'str'
>>> printme('i love you')
i love you
>>> def printinfo(name,age): #关键字参数
print(name + '->' + str(age))
return
>>> printinfo(age = 21,name = 'YugeZhang') #传入参数的顺序可以颠倒
YugeZhang->21
>>> def printinfo(name = 'YugeZhang',age = 21): #默认参数
print(name + '->' + str(age))
>>> printinfo()
YugeZhang->21
>>> printinfo(age = 15,name= 'Jack')
Jack->15
>>> def printinfo(name,*hobby): #不定长参数,以元组形式传入
print(name,hobby)
>>> printinfo('CaiXukun','sing','dance','basketball')
CaiXukun ('sing', 'dance', 'basketball')
>>> def printinfo(index,**info): #不定长参数,以字典形式传入
print(str(index),info)
>>> printinfo(1,name = 'Cai',hobby = 'sing')
1 {
'name': 'Cai', 'hobby': 'sing'}
函数的参数需要的是变量,试图用“元组”的形式来传递是不可行的
闭包的条件