gpt4 book ai didi

Python 赋值运算符优先级 - (a, b) = a[b] = {}, 5

转载 作者:行者123 更新时间:2023-12-05 07:07:57 25 4
gpt4 key购买 nike

我在 Twitter 上看到了这个 Python 片段并且对输出感到非常困惑:

>>> a, b = a[b] = {}, 5
>>> a
{5: ({...}, 5)}

这是怎么回事?

最佳答案

来自Assignment statements documentation :

An assignment statement evaluates the expression list (remember that this can be a single expression or a comma-separated list, the latter yielding a tuple) and assigns the single resulting object to each of the target lists, from left to right.

你有两个分配目标列表; a, ba[b],值 {}, 5 从左到右分配给这两个目标。

首先 {}, 5 元组被解压为 a, b。您现在有 a = {}b = 5。请注意,{} 是可变的。

接下来,您将相同的字典和整数分配给 a[b],其中 a 计算为字典,b 计算为 5,因此您将字典中的键 5 设置为元组 ({}, 5),从而创建循环引用。 {...} 因此引用了 a 已经引用的同一个对象。

因为赋值是从左到右进行的,你可以将其分解为:

a, b = {}, 5
a[b] = a, b

因此 a[b][0]a 是同一个对象:

>>> a, b = {}, 5
>>> a[b] = a, b
>>> a
{5: ({...}, 5)}
>>> a[b][0] is a
True

关于Python 赋值运算符优先级 - (a, b) = a[b] = {}, 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61998540/

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