a tuple
在 python 中(在代码块中)由逗号定义;括号不是强制性的(在以下情况下)。所以这三个都是等价的:
a, b = 1, 2
a, b = (1, 2)
(a, b) = 1, 2
如果我定义一个函数
def f(a, b):
print(a, b)
以这种方式调用它会起作用:
f(2, 3)
这不会:
f((2, 3))
# TypeError: f() missing 1 required positional argument: 'b'
当元组是函数参数时,python 如何区别对待它们?这里的括号是必要的(我理解 为什么 会这样,我很高兴 python 以这种方式工作!)。
我的问题是:当元组是函数参数时,python 如何区别对待它们。
原文由 hiro protagonist 发布,翻译遵循 CC BY-SA 4.0 许可协议
为方便起见,Python 根据赋值语句的需要构造了一个临时元组。因此,一旦到达数据移动,您的所有三个赋值语句就完全相同。
函数调用不是赋值语句;这是一个参考映射。因此,语义不同。
如果您希望 Python 将您的元组解压缩为两个单独的参数,请使用
*
运算符: