函数的参数传递

xiaoxiao2021-02-28  64

def func(a=1,b=2,c=3): #形参有默认值 print a,b,c func() func(4,5,6) func(5,6) func(7) func(a=8) func(a=9,b=10) func(11,c=12) #func(11,a=12)和func(a=12,13)是错误的 def calcSum(*args):#可以接受任意数量的参数 sum=0 for i in args: sum+=i print sum #调用: calcSum(1,2,3) calcSum(123,456) calcSum() #在变量前加上*,调用时的参数会存储在一个tuple(元组)对象中,赋值给形参。 #在函数内部需要对参数进行处理时,只要对这个tuple类型的形参进行操作就可以了 #因此函数在定义时不需要指明参数个数,就可以处理任意参数个数的情况 #tuple是有序的,所以args中元素的顺序受到赋值时的影响 def printALL(*args): for i in args: print i, print printALL(1,2,3) printALL(3,2,1) #可以按照函数名传递参数,不受位置的限制,也可以像tuple传递一样不受限制 #func2(**kargs)则是把参数以键值对字典的形式传入 def printAll(**kargs): for k in kargs: print k,':',kargs[k]#字典是无序的,故在输出的时候,不一定按照提供参数的顺序 #调用时,参数的顺序无所谓,只要对应合适的形参名就可以 printAll(a=1,b=2,c=3) printAll(x=4,y=5) #混合的参数调用方式 def func3(x,y=5,*a,**b): print x,y,a,b func3(1) #混合使用时,首先注意函数的写法,必须遵守: func3(1,2) #带有默认值的形参(arg=)须在无默认值的形参之后; func3(1,2,3) #元组参数(*args)须在带有默认值的形参(arg=)之后; func3(x=1) #字典参数(**kargs)须在元组参数(*args)之后 func3(x=1,y=1) func3(x=1,y=1,a=1,b=1) #可以省略某种类型的参数,仍需保证此顺序规则 func3(1,y=1) #调用时遵守 func3(1,2,3,4,a=1) #指定参数名称的参数要在没指定名称的参数之后 func3(1,2,3,4,k=1,t=0,o=3) #不可以重复传递 ''' #函数被调用时,参数的传递过程为: #1.按顺序把没指定参数的实参赋给形参 #2.把指定参数名称(args=v)的实参赋给对应的形参; #3.将多余的没指定参数的实参打包成一个tuple传递给元组参数(*args); #4.将多余的指定参数名的实参打包成一个dict传递给字典参数(**kargs) '''
转载请注明原文地址: https://www.6miu.com/read-81998.html

最新回复(0)