问题标签 [chained-assignment]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
43 浏览

python - 可变类型的链式赋值

调试一段代码时遇到了这个问题。如果以前没有意识到这种行为。

两个“变量”都指向同一个内存位置。但是现在如果一个改变了,另一个也改变了:

所以基本上在这里我们有两个名称分配给同一个变量/内存地址。这不同于:

在这里更改其中一个foobar不会对另一个产生任何影响。

所以我的问题是:为什么这个特性(可变类型的链式赋值)甚至存在于 Python 中?除了给你工具让你在脚上开枪之外,它还有其他用途吗?

0 投票
2 回答
95 浏览

c - if 条件中的链式赋值

嗨,只是想知道您是否在 if 条件中使用链式分配,最左边的变量是否用于检查 if 条件

像 a=b=c 一样,它的 a 是最终检查的,而不是 b 或 c

0 投票
1 回答
49 浏览

python - 为什么顺序在这个链式分配中很重要?

如以下两个代码片段所示,链式赋值的顺序很重要(即node = node[ch] = {}不等同于node[ch] = node = {}.

为什么顺序很重要?


根据另一个 SO question,链式分配

相当于:

我验证了等效形式产生了相同的行为。IE

导致一个print(trie){}

同时

导致一个print(trie){'w': {'o': {'r': {'d': {}}}}}

0 投票
1 回答
18 浏览

python - python - 链式分配 - 接收 SettingWithCopyWarning 但仍更改原始 df?

我有一个数据框:

然后,如果我按如下方式进行链式分配,它不会更改jb. 而且还会触发SettingWithCopyWarning

但是如果我切换链式赋值的顺序,它会改变原来的值jb,但仍然会触发SettingWithCopyWarning

所以第二个代码仍在生成副本,但为什么它最终会修改原始代码jb