旅游网站 功能外链推广网站
函数
1.函数声明
def <函数名> (参数列表): (没有参数时,包含参数的圆括号也必须写上,圆括号后也必须有:)
<函数语句>
return <返回值>
例:
def tpl_sum(T):result=0for i in T:result+=ireturn result
2.可变数量参数传递
在自定义函数时,如果参数名前加上一个星号“*”, 则表示该参数就是一个可变长参数。在调用该函数时,如果依次序将所有的其他变量都赋予值之后,剩下的参数将会收集在一个元组中,元组的名称就是欠骂带星号的参数名。
例:
def change_para_num(*tpl)print(type(tpl))print(tpl)change_para_num(1)
change_para_num(1,2,3)
下例演示了一个同时有三种类型的参数的函数定义及调用:
def change_para_num(*tpl,a,b=0):print('tpl:',tpl)print('a:',a)print('b:',b)change_para_num(1,2,3,a=5)
change_para_num(1,2,3) #该调用会出现,a变量没有默认值,也不能获取值
第一次调用时给出了3个位置参数和一个关键字参数,因此变量收集了1,2,3作为一个元组,而变量a则取得值5,变量b则使用了默认值,第二次调用没有提供关键字参数,无默认值得参数a没有获取到值,所以调用失败。
下个例子演示了一个定义了收集关键字参数的示例,
def change_para_dct(a,b=0,**adct):print('adct:',adct)print('a:',a)print('b:',b)change_para_dct(1,k=3,b=2,c=3)
代码中定义了函数change_para_dct(),其最后一个参数前由两颗星号,记为收集关键字参数到字典中。调用时给出两个多余的关键字参数,运行时会被放入名称为adct的字典中。
运行效果
下例演示了一个带有大量默认参数的函数及其调用
def cube(name, **nature):all_nature-{'x':1,'y':1,'z':1,'color':'white','weight':1}all_nature.update(nature)print(name,'立方体的属性:')print('体积:',all_nature['x']*all_nature['y']*all_nature['z'])print('颜色:',all_nature['color'])print('重量:',all_nature['weight'])
cube('first')
cube('second',y=3,color='red')
cube('third',z=2,color='greed',weight=10)
代码中定义了一个函数cube(),其参数为两个。第一个是普通参数name,第二个为收集关键字参数函数中给一个默认参数的字典。然后用字典的update()函数将调用时提供的关键字参数更新至默认参数的字典。以后的应用中直接从字典获取即可,最后用三种不同参数的方式调用cube()函数。
3.拆解序列的函数调用。然后你
前面使用函数调用时提供的参数都是未知参数和关键字参数。实际上调用函数时还可以把元组和字典进行拆解调用。
- 拆解元祖 提供位置参数.
- 拆解字典 提供关键字参数。
调用时使用拆解元祖的方法是在调用时提供的参数前加一个*号;要拆解字典,必须在提供的调用参数前加一个*号。
l例子
def mysum(a,b):return a+b
print('拆解元组调用:')
print(mysum(*3,4)))
print('拆解元组调用:')
print(mysum(**{'a':3,'b':4}))