Python打包关键字参数*

时间:2014-03-27 06:55:02

标签: python keyword-argument

我有一个代码,我正在学习,而且我完全被困在这里。

代码是:

def f(*a):
    print a
print (*[1,2]) # prints (1,2)

为什么?我不知道这背后的过程。我知道*args使变量长度参数成为元组,但(*[1,2])执行了什么?

2 个答案:

答案 0 :(得分:0)

我想你想写这个:

print f(*[ 1, 2]) # Python 2
print(f(*[ 1, 2])) # Python 3

*的作用是unpacking。在这种情况下,您正在解压缩列表。它通常用于将列表作为“独立”参数传递给函数,例如:

def f(a, b):
    print a
    print b

您可以将其称为

f(*[1, 2])  # with unpacking

相当于

f(1, 2)

答案 1 :(得分:0)

这称为参数解包 - 请参阅参考at the documentation

简而言之,print f(*[1,2])获取列表中的每个元素,并将其作为单个参数传递给方法f

方法f采用多个位置参数,在正文中分配名称a

因此,当您输入f(*[1,2])时,这与f(1,2)相同。另一方面,f收到1,2作为元组a并打印出来:

>>> def f(*a):
...    print(a)
...
>>> f(*[1,2])
(1, 2)