python: *args & **kwargs

概述

Python是支持 可变参数 的,实现手段之一就是使用 *args**kwargs 语法。

可变参数 的意思是:预先并不知道, 函数使用者会传递多少个参数给你。

函数定义时

*args**kwargs 是一个 将 不定量的参数 pack 的过程。

函数调用时

*args**kwargs 是一个 将 不定量的参数 unpack 的过程。

同时使用时

在函数里同时使用所有这三种参数(标准参数*args**kwargs)时, 使用顺序如下:

some_func(fargs, *args, **kwargs)

其中,*args 必须位于 **kwargs 之前。

实验代码

函数定义时

def func(requirement, *args, **kwargs):
    print 'requirement = ', requirement
    print 'args = ', args
    print 'kwargs = ', kwargs
    print

if __name__ == '__main__':
    func(1, 2, 3, 4)
    func(0, a=1, b=2, c=3)
    func(1, 2, 3, 4, a=1, b=2, c=3)
    func('a', 1, None, a=1, b='2', c=3)

打印结果:

requirement =  1
args =  (2, 3, 4)
kwargs =  {}

requirement =  0
args =  ()
kwargs =  {'a': 1, 'c': 3, 'b': 2}

requirement =  1
args =  (2, 3, 4)
kwargs =  {'a': 1, 'c': 3, 'b': 2}

requirement =  a
args =  (1, None)
kwargs =  {'a': 1, 'c': 3, 'b': '2'}

函数调用时

def func(a, b, c, d):
    print 'a: ', a
    print 'b: ', b
    print 'c: ', c
    print 'd: ', d

args = [1, 2, 3, 4]
kwargs = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print '*args:'
func(*args)
print '\n**kwargs:'
func(**kwargs)

打印结果:

*args:
a:  1
b:  2
c:  3
d:  4

**kwargs:
a:  1
b:  2
c:  3
d:  4


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值