首页 > 解决方案 > 关于 Python 元组解包的说明

问题描述

据了解,元组的解包只能发生在元组/列表之间,所以

x,*y = (1,2,3,4)

已验证。但是,如果我们尝试对单个变量进行解包

*x = (1,2,3,4,5)

我们收到一个错误,因为 x 不是列表/元组,因此无法进行解包。如果是这种情况,那么我们如何使用 *args 在函数中有多个参数

def max(* args):
  for x in args:
    print(x)

所以在这里,如果我调用 max(1,2,3,4)。我们不应该得到一个错误因为 *args is not a tuple 因此我们不能解包吗?

标签: pythonpython-3.xargumentsiterable-unpacking

解决方案


问题是参数列表的括号总是包含一个元组。它们是您不能省略的括号。因此它们不会与运算符优先级括号混淆

顺便说一句,有趣的事实:写(注意 x 之后的逗号)

*x, = (1,2,3,4,5)

然后它就可以工作了,就像您需要在括号中添加一个逗号以使其成为一个元组一样。像 (1) 不是元组,但 (1,) 是


推荐阅读