【发布时间】:2021-10-08 01:38:35
【问题描述】:
Python 赋值顺序的行为与我预期的不同。在javascript中我可以这样写:
x = {};
a = x;
a = a['y'] = {};
console.log(a);
// {}
console.log(x)
// {'y':{}}
因为分配是从右到左进行的,在a = a['y'] = {};中,a['y']被分配{},然后a被分配a['y']——即{};
但是,在 python 中,情况并非如此。相同的设置:
x = {}
a = x
a = a["y"] = {}
print(a)
# {"y": {...}}
print(x)
# {}
在 python 中,这使得a 成为一个自引用对象,并且根本不会在x 上设置“y”。分配不能从左到右,因为在设置“y”之前分配a = a["y"] 会引发错误。那么python在这里做什么以及为什么?
【问题讨论】:
标签: python