简明Python 可变参数
2018-06-23 13:29:07来源:未知 阅读 ()
1 def total(a=5, *numbers, **phonebook): 2 print('a', a) 3 #遍历元组中的所有项目 4 for single_item in numbers: 5 print('single_item', single_item) 6 #遍历字典中的所有项目 7 for first_part, second_part in phonebook.items(): 8 print(first_part,second_part) 9 print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
1 a 10 2 single_item 1 3 single_item 2 4 single_item 3 5 Inge 1560 6 John 2231 7 Jack 1123 8 None
当我们声明一个诸如 *param 的星号参数时,从此处开始直到结束的所有位置参数 (Positional Arguments)都将被收集并汇集成一个称为“param”的元组(Tuple)。 类似地,当我们声明一个诸如 **param 的双星号参数时,从此处开始直至结束的所有关键字 参数都将被收集并汇集成一个名为 param 的字典(Dictionary)。
*args
1 def argsFunc(a, *args): 2 print a 3 print args 4 5 >>> argsFunc(1, 2, 3, 4) 6 1 7 (2, 3, 4)
argsFunc
中匹配完定义好的参数,剩余的参数以元组的形式存储在 args(args 名称你可以自行定义),因此在上述程序中只要你传入不小于 1 个参数,该函数都会接受,当然你也可以直接定义只接受可变参数,你就可以自由传递你的参数:
1 def argsFunc(*my_args): 2 print my_args 3 4 >>> argsFunc(1, 2, 3, 4) 5 (1, 2, 3, 4) 6 >>> argsFunc() 7 ()
很简单把,现在来将另一个种不定参数形式
**kwargs
形参名前加两个*表示,参数在函数内部将被存放在以形式名为标识符的 dictionary
中,这时调用函数的方法则需要采用 arg1=value1,arg2=value2
这样的形式。
为了区分,我把 *args 称作为数组参数,**kwargs 称作为字典参数
>>> def a(**x):print x
>>> a(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3} #存放在字典中
不过,有个需要注意,采用 **kwargs 传递参数的时候,你不能传递数组参数
>>> a(1,2,3) #这种调用则报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a() takes exactly 0 arguments (3 given)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash