python中变长参数的用法举例?
2016-06-28 19:40
573 查看
慎用变长参数
python支持可变长度的参数列表,可以通过*arg, **kwargs这两个特殊语法来实现。以下为变长参数使用的例子:
* 使用*args 来实现可变参数列表: *args用接受
一个包装为元组形式的参数列表来传递非关键字参数,参数个数可以随意。
使用**kwargs接收字典形式的关键字参数列表,其中字典的键值对分别表示不可变参数的参数名和值。
一个函数中同时定义了普通参数,默认参数,以及上述两种形式的可变参数,那么使用情况又会是怎么样的呢?
在下列场景下适合使用可变参数
如果参数数目不确定,可以考虑使用变长参数。
用来实现函数的多态或者在继承情况下子类需要调用父类的某些方法的时候。
本文摘自《编写高质量代码 改善python程序的91个建议》
python支持可变长度的参数列表,可以通过*arg, **kwargs这两个特殊语法来实现。以下为变长参数使用的例子:
* 使用*args 来实现可变参数列表: *args用接受
一个包装为元组形式的参数列表来传递非关键字参数,参数个数可以随意。
def SumFun(*args): result = 0 for x in args[0:]: result += x return result print SumFun(2, 4) print SumFun(1,2,3,4,5) print SumFun()
使用**kwargs接收字典形式的关键字参数列表,其中字典的键值对分别表示不可变参数的参数名和值。
def category_table(**kwargs): for name, value in kwargs.items(): print '{0} is a kind of {1}'.format(name, value) category_table(apple='fruit', carrot='vegetable') category_table(BMW = 'Car')
一个函数中同时定义了普通参数,默认参数,以及上述两种形式的可变参数,那么使用情况又会是怎么样的呢?
def set_axis(x, y xlabel='x', ylable='y', *args, **kwargs): pass
在下列场景下适合使用可变参数
def mydecorator(fun): def new(*args, **kwargs): return fun(*args, **kwargs) return new
如果参数数目不确定,可以考虑使用变长参数。
用来实现函数的多态或者在继承情况下子类需要调用父类的某些方法的时候。
class A(object): def somefun(self, p1, p2): pass class B(A): def myfun(self, p3, *args, **kwargs): super(B, self).somefun(*args, **kwargs)
本文摘自《编写高质量代码 改善python程序的91个建议》
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法