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

慎用变长参数
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个建议》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值