python(3)-函数动态参数
2016-02-04 14:32
525 查看
先来看一段代码
现在执行一下,看看执行结果:
可以看到,程序输出了两个元组,但神奇的是函数可以接受一个参数,也可以接受很多个参数,这就是python的动态参数。
那么我们来想一想,给show()函数传递一个列表,那么执行结果是什么呢?
可以看到,show()函数将整个列表当作一个元组的元素进行输出了;再给它传递一个字典进去,试试看:
把字典也当作了元组中的一个元素输出了,所以可以看出 *arg 将传入的所有参数都转换成了元组。
接下来,再来看一段代码,我们把 * 换成 **,先传递一个数字进去:
可以看到,传递的参数被转换成了字典
总结一下:
* 将所有传入的元素转换成元组
** 将所有传入的元素转换成字典
把这两种参数放在一起使用试试
这里有一点要注意的是:* 放在前面,**放在后面,顺序不可以错; 传递的参数也必须按照这个顺序,否则会报错。
那可不可以传列表和字典呢进去呢?
在列表名前面一定要加*, 在字典前面要加**
def show(*arg): print(arg, type(arg)) if __name__ == "__main__": show(1) show(1,2,3,4,5)
现在执行一下,看看执行结果:
(1,) <class 'tuple'> (1, 2, 3, 4, 5) <class 'tuple'>
可以看到,程序输出了两个元组,但神奇的是函数可以接受一个参数,也可以接受很多个参数,这就是python的动态参数。
那么我们来想一想,给show()函数传递一个列表,那么执行结果是什么呢?
([1, 2, 3, 4, 5, 6, 7],) <class 'tuple'>
可以看到,show()函数将整个列表当作一个元组的元素进行输出了;再给它传递一个字典进去,试试看:
({1: 2, 2: 3},) <class 'tuple'>
把字典也当作了元组中的一个元素输出了,所以可以看出 *arg 将传入的所有参数都转换成了元组。
接下来,再来看一段代码,我们把 * 换成 **,先传递一个数字进去:
def show(**arg): print(arg, type(arg)) if __name__ == "__main__": show(n1=11,n2=22)
{'n2': 22, 'n1': 11} <class 'dict'>
可以看到,传递的参数被转换成了字典
总结一下:
* 将所有传入的元素转换成元组
** 将所有传入的元素转换成字典
把这两种参数放在一起使用试试
def show(*arg, **kwargs): print(arg, type(arg)) print(kwargs, type(kwargs)) if __name__ == "__main__": show(11,22,33,n1=11,n2=22) (11, 22, 33) <class 'tuple'> {'n1': 11, 'n2': 22} <class 'dict'>
这里有一点要注意的是:* 放在前面,**放在后面,顺序不可以错; 传递的参数也必须按照这个顺序,否则会报错。
那可不可以传列表和字典呢进去呢?
def show(*arg, **kwargs): print(arg, type(arg)) print(kwargs, type(kwargs)) if __name__ == "__main__": l = [11,22,33] d = {'n1':88, 'n2':99} show(*l, **d) (11, 22, 33) <class 'tuple'> {'n2': 99, 'n1': 88} <class 'dict'>
在列表名前面一定要加*, 在字典前面要加**
相关文章推荐
- 批量下载豆瓣相册图片python脚本
- python自定义排序函数
- install Python 3.3 on Ubuntu 12.04
- 一行代码的Python GUI弹框
- Python 命令行工具 -- click
- 【同行说技术】Python程序员小白变大神必读资料汇总(四)
- Python下OS模块重命名方法renames
- Python类的__getitem__和__setitem__特殊方法
- python查找指定目录下所有文件,以及改文件名的方法
- python 静态方法和类方法
- tkinter Menu
- Python元祖,列表,字典,集合的比较
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
- Python 用队列实现多线程并发
- python基础:day3作业
- python 基础2
- Python--wxpython
- python往mysql中插入datetime类型的数据
- Python-一张图
- python 对象拷贝, 值相同,同一对象的区别