您的位置:首页 > 编程语言 > Python开发

python中变长参数的用法举例?

2016-06-28 19:40 573 查看
慎用变长参数

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个建议》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息