问题标签 [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 投票
2 回答
126 浏览

python - 可以使用海象运算符来避免列表理解中的多个函数调用吗?

假设我有一个这样的列表列表

我想对字符串元素应用一个函数,它返回几个值,我只需要一个子集(每个用例不同)。为了便于说明,我只是做一个简单的split()操作:

现在,假设我只想要最后两个字母并将它们连接起来;有一个简单的选择

并在列表理解中做同样的事情

两者都给出相同的期望结果

有没有办法在列表理解中使用海象运算符来避免调用dummy两次?

PS:不用说,实际上这个dummy函数要复杂得多,所以我没有寻找更好的解决方案,split但它完全是关于海象运算符的结构和潜在用途。

0 投票
1 回答
374 浏览

python - 为什么“if not a := say_empty()”会引发 SyntaxError?

PEP 572引入了赋值运算符(“海象运算符”)。

以下代码有效,并输出empty

我试图否定条件:

这引发了一个SyntaxError

给定的错误很清楚,但是我想知道为什么要设置此限制。

PEP 572 解释了为什么在迭代中使用赋值是有问题的(并且会引发SyntaxError),但我没有找到任何关于布尔值的信息。

0 投票
1 回答
190 浏览

python - 为什么在成员变量上使用海象运算符会引发 SyntaxError?

为什么我不能使用海象运算符:=来分配属性?它在分配给局部变量时起作用:

但是,如果我尝试分配给对象属性,则会出现语法错误:

我的意思是我可以使用临时局部变量绕过错误,但为什么会发生这种情况?我相信 100% 这是一种合法的语法。

0 投票
0 回答
72 浏览

python - Python 海象运算符仅适用于变量名的原因是什么?

有效代码:

无效的代码:

错误:

另一个有用的例子:

上面的片段理想情况下看起来像这样:

"X"但是,我们必须提前在变量中生成该数组以assert标记至少三行,因为仍然需要一个变量)。

我知道我给出的最近的例子可能是不好的风格,但是这种小的可能的单行代码在研究代码中相当普遍,通常很适合列表理解的东西必须改为写在 for -loop 由于无法编写此类表达式。

由于解析语言的任何限制,海象运算符的这种限制是否存在?是否决定实施?或者这个功能会出现在python的未来版本中吗?这种限制的原因是什么?

0 投票
1 回答
631 浏览

python - 在 if 语句中使用海象运算符不起作用

我有一个简单的函数,它应该根据模式输出前缀,或者None如果它不匹配。尝试做海象似乎不起作用。任何想法?

追溯

0 投票
2 回答
482 浏览

python - 如何使用海象运算符输入提示?

我正在尝试输入提示海象运算符表达式,即

while (var: int := some_func()): ...

我怎样才能做到这一点?

0 投票
1 回答
238 浏览

python - 仅当第一个值是真值时,才解包元组并将变量分配给第二个值

我有一个 Python 函数,它返回一个带有布尔值和字符串的元组

有没有办法可以在if使用布尔值的语句中使用此函数的输出并将字符串值分配给if语句中的变量

0 投票
2 回答
339 浏览

python - 为什么海象运算符在此函数的返回语句中实现时不起作用?

当我想到在 return 语句中实现运算符时,我试图解决这个问题。这是问题:

数字根是一个数字中所有数字的递归和。给定n,取n的位数之和。如果该值超过一位,则继续以这种方式减少,直到产生一位数。输入将是一个非负整数。 例子:

  1. 16 --> 1 + 6 = 7
  2. 493193 --> 4 + 9 + 3 + 1 + 9 + 3 = 29 --> 2 + 9 = 11 --> 1 + 1 = 2
  3. 942 --> 9 + 4 + 2 = 15 --> 1 + 5 = 6

代码:

0 投票
1 回答
143 浏览

python - 您可以在 Python 中将加法赋值 ( += ) 运算符与海象运算符 ( := ) 结合起来吗?

这是我现在写的代码:

我想知道是否存在这样的事情:

0 投票
1 回答
75 浏览

python - 在 Python 中,海象运算符的运算顺序是什么?

如果有人可以通过在 PEMDAS 中添加 W 来给出答案,那将非常有用。谢谢。