Python 函数可变参数列表*args和**kwargs

    许多语言都支持可变参数列表,python也不例外。python的可变参数列表有点不太一样,有两种类型的可变参数列表,一种是元组,一种是字典。

    一,元组参数列表:

    (1)函数定义形式:def func(a, b, *args)。这种情况下,形参args是一个元组。函数调用时将多余的参数组合起来,形成一个元组,赋值给args。args就是这些多余参数的元组。代码示例如下:

import os, sys

def func(a, b, *args):
    print(args)

if __name__ == '__main__':
    func(10, 20, 'hello', 'world', 100)

结果如下:

('hello', 'world', 100)

    (2)函数调用形式:func(a, *args)。这种情况下,实参args是一个元组。函数调用时将元组拆开,每参数对应赋值给形参。代码示例如下:

import os, sys

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

if __name__ == '__main__':
    args = (2, 3, 4)
    func(1, *args)

结果如下:

(1, 2, 3, 4)

    二,字典参数列表:

    (1)函数定义形式:def func(a, b, **kwargs)。这种情况下,形参kwargs是一个字典。函数调用时将多余的参数组合起来,形成一个字典,赋值给kwargs。kwargs就是这些多余参数的字典。代码示例如下:

import os, sys

def func(a, b, **kwargs):
    print(kwargs)

if __name__ == '__main__':
    func(1, 2, x = 3, y = 'Good', z = 'Morning')

结果如下:

{'y': 'Good', 'x': 3, 'z': 'Morning'}

    (2)函数调用形式:func(a, **kwargs)。这种情况下,实参kwargs是一个元组。函数调用时将元组拆开,每参数对应赋值给形参。代码示例如下:

import os, sys

def func(a, b, x, y, z):
    print(a, b, x, y, z)

if __name__ == '__main__':
    kwargs = {'x':3, 'y':4, 'z':5}
    func(1, 2, **kwargs)

结果如下:

(1, 2, 3, 4, 5)

总结如下:

    Python的可变参数*args 如果用在函数定义中,则args是元组的组合过程;如果用在函数调用中,则args是元组的分解过程。**kwargs如果用在函数定义中,则kwargs是字典的组合过程;如果用在函数调用中,则kwargs是字典的分解过程。

 

转载于:https://my.oschina.net/yepanl/blog/1585767

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值