问题标签 [walrus-operator]

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 回答
645 浏览

python - 在嵌套理解中使用海象运算符 := 的替代方法

说,为了演示,我必须列出“输入点”,并输出从这些点开始的三对数字:

我可以在扩展的 for 循环中做到这一点:

我还可以通过列表理解更简洁地做到这一点,使用海象运算符来避免range()一遍又一遍地调用:

但是,如果我想使用列表推导而不是list(),并进一步处理zip()(例如,将我的输出作为字符串)的结果,我不能这样做:

PEP 572提到实现赋值运算符的问题是其根源:

由于参考实现中的设计限制(符号表分析器无法轻易检测到名称何时在最左边的理解可迭代表达式和理解的其余部分之间重用),命名表达式完全不允许作为理解可迭代表达式的一部分(部分在每个“in”之后,以及任何后续“if”或“for”关键字之前)

这让我失望。除了将其扩展为完整for循环之外,是否有任何解决方法?

0 投票
1 回答
90 浏览

python-3.8 - 奇怪的行为 Python 3.8 海象运算符:链式不等式

以下代码:

给出以下输出:

这似乎完全不一致。一些变化,比如 (x:=1)>=2>(y:=9) or y>=2>x 也给出

有谁知道发生了什么?

0 投票
1 回答
97 浏览

python - 海象运算符中的错误

我正在与海象操作员一起工作。我让用户猜测 0 到 10 之间的数字。然后将他们的猜测添加到一个充满他们猜测的列表中。但是一旦他们输入 0,它就会打印出列表。

我遇到的问题是第一个猜测没有放在列表中。每次添加值时,我都尝试打印出列表,但列表不会包含第一个输入。如何让海象运算符将第一个值附加到我的列表中?

这是我的代码:

这是示例输出,其中“2”未附加到列表中:

0 投票
2 回答
2328 浏览

python - 为什么不能使用 Python 的海象运算符来设置实例属性?

我刚刚了解到新的海象运算符 ( :=) 不能用于设置实例属性,它应该是无效的语法(引发 a SyntaxError)。

为什么是这样? (你能提供一个提到这个的官方文档的链接吗?)

我查看了PEP 572,找不到是否/在哪里记录了这一点。


研究

这个答案在没有解释或来源的情况下提到了这个限制:

您不能在对象属性上使用海象运算符


示例代码

尝试导入Foo结果为SyntaxError

0 投票
3 回答
374 浏览

python - 为什么我不能分配给命名表达式(LHS 海象运算符)?

分配给表达式(而不是名称)在 Python 中很常见。例如,这是完全有效的语法:

但是,如果我尝试使用海象运算符通过使 LHS 成为命名表达式来缩短它,例如

Python 引发了一个 SyntaxError:

SyntaxError:无法分配给命名表达式

同样,for x[0] in range(5)is 有效的语法(只是非常混乱),而for (a:=x[0]) in range(5)is 又是SyntaxError: cannot assign to named expression.

为什么我不能分配给命名表达式?这是设计还是实现?

PEP 572提到了一些不能使用海象运算符的情况,但除了一种情况外,所有情况都是关于无括号表达式的语法,最后一种情况是关于 f 字符串。与此答案( )中指出的情况不同,(self.x := ...)在我的情况下,海象运算符中的赋值目标是一个简单的名称/标识符,而不是表达式。从语言参考中也不清楚为什么不允许这样做。 今天在谷歌上搜索错误消息在撰写本文时恰好产生了三个结果:一个关于理解限制的问题,一个Stack Overflow 聊天消息,期望有数百个热门网络问题(没有发生),以及第 3 方 Python 解析器中的问题;没有人帮助我。

我无法分配给命名表达式的原因是什么?这是在某处记录或定义的设计规则,还是实施限制?据我所知,它不会导致任何歧义,而且我的用例似乎应该是有效的。

0 投票
2 回答
5038 浏览

python - 列表推导中的海象运算符(python)

因此,在编码时,我真的很喜欢使用列表推导来转换数据,并且我尽量避免 for 循环。现在我发现海象运算符可以非常方便地完成此操作,但是当我尝试在我的代码中使用它时,它似乎不起作用。我有以下代码,想在一个简单的行中将包含有关时间戳的数据的字符串转换为 datetime 对象,但出现语法错误,我不确定正确的语法是什么,有人知道我做了什么错误的?

0 投票
2 回答
107 浏览

python-3.x - 从列表理解中使用条件字符串创建的列表中提取值

我有的:

工作正常,系列中的每个实例都被计算在内。

只需要计算正数实例,因此:

发现海象运算符,但在我的情况下 x 是一个字符串,也许是核心问题?

我确实收到海象部分代码的语法错误。

我需要总数和正数计数,在函数中创建一个“总数”和“正数”列似乎很笨重,有没有办法通过列表理解来做到这一点。

预先感谢您的协助。

0 投票
1 回答
87 浏览

python - 海象运算符:NameError:在封闭范围内赋值之前引用了自由变量“it”

我想使用这样的海象运算符创建一个列表:

我得到这个错误:

另一方面,当我这样做时,它会起作用:

在哪里:

任何人都可以帮忙吗?我不知道我在这里错过了什么

0 投票
2 回答
2541 浏览

python - While循环中的Python海象运算符

我正在尝试了解海象赋值运算符。

当在循环中将条件重新分配为 False 时,经典的 while 循环会中断。

为什么这不能使用海象运算符?它忽略了 x 的重新分配,从而产生了一个无限循环。

0 投票
3 回答
54 浏览

python - 有没有办法对未定义的变量执行 while 循环?(我怎样才能重写这个,Python)

我想做一个 while 循环,直到用户在输入中没有输入任何内容。

这是我目前有效的,但我想删除answer = None实例化。

有没有办法在answer = None这里删除并保留功能?