码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记7-函数的多类型传值和冗余参数

时间:2016-06-18 09:00:09      阅读:984      评论:0      收藏:0      [点我收藏+]

标签:python学习笔记7-函数的多类型传值和冗余参数

python学习笔记7-函数的多类型传值和冗余参数


函数多类型传值

例一,元组传参

In [2]: def fun(x,y):
   ...:     return x+y
In [4]: print fun(3,5)
8
In [5]: t=(1,2)
In [6]: print fun(*t)  注意,这里使用的是*t调用元组t
3
In [7]: print fun(t)   用t,不加*,报错只给了一个参数,需要给2哥参数
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-e28f492cc4ca> in <module>()
----> 1 print fun(t)
TypeError: fun() takes exactly 2 arguments (1 given)

In [10]: def fun(x,y,z):
   ....:     return x+y+z
   ....: 

In [11]: t1=(2,3,4)

In [12]: fun(*t1)       把元组t1的值,2,3,4分别赋值给x,y,z
Out[12]: 9

In [13]: fun(*(1,2,3))  把1,2,3赋值给x,y,z
Out[13]: 6

In [14]: fun(1,*t)      t=(1,2) 把1,1,2分别赋值给x,y,z
Out[14]: 4


In [15]: fun(*t,1)      
  File "<ipython-input-15-aee1a8f57f2b>", line 1
    fun(*t,1)
SyntaxError: only named arguments may follow *expression
只有命名参数后面可以跟*expression表达式,1是命名参数,1,*t正确,*t,1错误

也可以这样调用参数
In [16]: fun(x=1,y=3,z=5)
Out[16]: 9

例二、字典传值

注:字典的key和形参是一样的才行,都是x,y,z,否则报错
In [10]: def fun(x,y,z):
   ....:     return x+y+z
   n [20]: dic ={‘x‘:1,‘y‘:3,‘z‘:5}
In [21]: fun(**dic)
Out[21]: 9


函数的冗余参数


向函数传元组和字典

处理多余实参,传到字典中

def fun(x,y,*args,**kwargs)

In [29]: def fun(x,y,*args,**kwargs):
    print x
    print args
    print kwargs
In [46]: fun(1,2,[1,2],*t,f=2,**dic1)
1
([1, 2], 1, 2)
{‘a‘: 4, ‘c‘: 9, ‘b‘: 6, ‘f‘: 2}


本文出自 “梅花香自苦寒来!” 博客,请务必保留此出处http://daixuan.blog.51cto.com/5426657/1790496

python学习笔记7-函数的多类型传值和冗余参数

标签:python学习笔记7-函数的多类型传值和冗余参数

原文地址:http://daixuan.blog.51cto.com/5426657/1790496

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!