Python 中的 *args 和 **kwargs 参数

Python 中的 *args 和 **kwargs 参数

*args 语法

使用 *args 语法,一个 python 函数可以在它的形式参数列表中声明接受零个或多个位置参数。 *args 将所有接收到的可变的位置参数组合到一个元组(tuple)里,这个元组可以在函数中访问。

# 形式参数示例
def function_with_many_arguments(arg1, *args):
    print args

# 此函数中的`args`将成为传递的所有可变位置参数的元组,可以在函数中像使用元组一样使用。
function_with_many_arguments('fix arg1', 'hello', 123, True)
# >> ('hello', 123, True)

反过来,当*args 语法用在调用函数的实参列表时,它会将一个元组或列表的参数展开成一系列的位置参数。

# 实参示例
def function_with_3_parameters(num, boolean, string):
    print "num is " + str(num)
    print "boolean is " + str(boolean)
    print "string is " + string

arg_list = [1, False, 'decorators']

# 通过使用'*'号 arg_list将会被展开为三个位置参数
function_with_3_parameters(*arg_list)
# >> num is 1
# >> boolean is False
# >> string is decorators

**kwargs语法

**kwargs 语法跟**args 相似,但是它是跟关键词参数相关而不是位置。如果 **kwargs 语法用在一个形式参数列表中,它将所有接收到的可变的关键词参数收集到一个字典中。

def function_with_many_keyword_args(name, age, **kwargs):
    print kwargs

function_with_many_keyword_args('name', age=19, a='apples', b='bananas', c='cantalopes')
# >> {'a': 'apples', 'b': 'bananas', 'c': 'cantalopes'}

如果它用在一个函数的实参列表中。它将把一个字典扩展成一系统的关键词参数。

def multiply_name(count, name):
    print name * count

arg_dict = {'count': 3, 'name': 'Brian'}
multiply_name(**arg_dict)
# >> BrianBrianBrian
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值