gpt4 book ai didi

python-3.x - 为什么具有可迭代解包无效语法的元组的增强分配?

转载 作者:行者123 更新时间:2023-12-01 04:28:35 25 4
gpt4 key购买 nike

还行吧:

a = 1, 2, 3
b = *a,

但这是无效的语法:

b += *a,

还行吧:

b += (*a,)

更新

来自 documentation :

assignment_stmt::= (target_list "=")+ ( starred_expression | yield_expression)

增强_赋值_stmt::= augtarget augop ( expression_list | yield_expression)

所以这是分配和增强分配的规范的差异 - 后者具有 表达式列表而不是 starred_expression .

不过,如果有人能用通俗的语言解释原因就好了。 :)

最佳答案

可能,这来自 operator precedence , "(expressions...)"是最高的。当元组被隐式定义时,不确定这种情况。
看看这个:

>>> a = (1, 2, 3)
>>> b = (1, 2, 3)
>>> b = b + *a,
File "<stdin>", line 1
b = b + *a,
^
SyntaxError: invalid syntax
>>> b = b + (*a,)
>>> b
(1, 2, 3, 1, 2, 3)

关于python-3.x - 为什么具有可迭代解包无效语法的元组的增强分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com