函数冗余参数

来源:互联网 发布:新西兰旅游 知乎 编辑:程序博客网 时间:2024/06/03 16:33

多类型传值

  1. list类型给函数参数传值
  2. tuple类型给函数参数传值
  3. dictionary类型给函数参数传值

注意:list和tuple类型给函数参数传值的时候,元素的个数必须与函数参数的个数相等,且参数的顺序与list和tuple中的元素的顺序是完全一样的;dictionary类型给函数参数传值的时候,元素个数必须与函数的参数个数相等,且key的名字与函数中的参数的名字完全相同,字典中参数的顺序不作要求

#/usr/bin/python#coding:utf8def fun(name, age) :    print "name is %s" %name    print "age is %d" %agel = ['Gudio', 35] fun(*l)    #list给函数参数传值print "-"*20t = ('Bob',11) fun(*t)    #tuple给函数参数传值print "-"*20d = {"age":28, "name":"Brad"}fun(**d)  #dict给函数参数传值print "-"*20d1 = {"age1":28, "name1":"Brad"}#fun(**d1) #这里是错误的,因为字典的key与函数行参的名字不能一一对应print "-"*2023行注释之前的输出结果如下:name is Gudioage is 35--------------------name is Bobage is 11--------------------name is Bradage is 28--------------------Traceback (most recent call last):  File "13.py", line 23, in <module>    fun(**d1) #这里是错误的,因为字典的key与函数行参的名字不能一一对应TypeError: fun() got an unexpected keyword argument 'age1'23行注释之后的输出结果如下:name is Gudioage is 35--------------------name is Bobage is 11--------------------name is Bradage is 28----------------------------------------

传值冗余,参数个数任意

python的函数的参数个数可以固定,也可以参数个数是任意个数,如下所示:

#!/usr/bin/python#coding:utf8def fun(*args): # 参数个数任意    print argst = (10, 21, 33)fun(*t)print '#'*20fun() # 不传任意参数print '#'*20l = [1, 2, 3]fun(*l)print '#'*20fun(100, 200, 300)print '#'*20def fun1(x , *args): #至少一个参数    print "x = ", x    print argsfun1(10, *t) # 10赋值给x 元组t赋值给argsprint '#'*20fun1(10, 11, 12, 13) #按照顺序,10赋值给x,11、12和13自动当作一个元组print '#'*20fun1(10) #按照顺序,10赋值给x,元组为空print '#'*20#以下是指定参数传值,有元组传值的时候,不可以指定传值,指定的话就需要字典来传值了def fun2(**args): #参数个数为任意个数    print argsd = {'name':'Manni', 'age': 30}fun2()  #不传参数print '#'*20fun2(**d)print '#'*20fun2(x = 10, **d)print '#'*20def fun3(x, **args):    print "x = ", x    print "args = ", argsfun3(x = 10, y = 12)print '#'*20fun3(x = 10, **d)print '#'*20
0 0
原创粉丝点击