发布于 2022-09-19 03:28:31
您可以编写“其余的赋值运算符”,但是Python中只有一个赋值运算符,那就是walrus运算符!另一项任务..。减缩是赋值语句中的分隔符。
发布于 2022-09-19 03:39:57
它不被允许的主要原因是避免代码中的歧义。来自PEP 572 -赋值表达式的更多例外案例
在表达式语句的顶层禁止使用无括号的赋值表达式。示例: Y := f(x) #无效(y := f(x)) #有效,尽管不推荐 包含此规则是为了简化用户在赋值语句和赋值表达式之间的选择--在两者都有效的语法位置。 不加括号的赋值表达式被禁止在赋值语句的右侧的顶部。示例: y0 = y1 := f(x) #无效y0 = (y1 := f(x)) # Valid,但不鼓励 同样,这个规则是为了避免两种视觉上相似的方式来表达相同的东西。 对于调用中关键字参数的值,禁止使用无括号的赋值表达式。示例: foo(x =y := f(x)) #无效foo(x=(y := f(X) 包含此规则是为了不允许过于混乱的代码,并且因为解析关键字参数已经足够复杂了。 在函数默认值的顶层禁止使用无括号的赋值表达式。示例: def foo(应答=p := 42):#无效……def foo(answer=(p := 42)):#有效,虽然不是很好的风格. 包含这条规则是为了阻止在这样一个位置上产生副作用,因为这个位置的确切语义已经使许多用户感到困惑(cf )。针对可变默认值的通用样式建议),并在调用中响应类似的禁止(前一个项目)。 禁止将非括号大小的赋值表达式作为参数、返回值和赋值的注释。示例: def foo(回答:p := 42 = 5):#无效……def foo(回答:(p := 42) = 5):#有效,但可能没有用. 这里的推理类似于前面的两种情况;这种由: and =组成的符号和运算符的未分组分类很难正确阅读。 在lambda函数中禁止使用无括号的赋值表达式。示例: ( lambda : X := 1) #无效λ:(x := 1) #有效,但不太可能有用(x :=λ: 1) #有效λ行:(m := re.match(模式,行))和m.group(1) #有效 这允许lambda始终比:=绑定得更少;在lambda函数中在顶层进行名称绑定不太可能有价值,因为没有办法使用它。在名称将不止一次使用的情况下,表达式可能无论如何都需要括号大小,因此这种禁止很少会影响代码。 F-字符串中的赋值表达式需要括号.示例:f'{(x:=10)}‘# Valid,使用赋值表达式' 10’>>> x=10 >>> f'{x:=10}‘# Valid,将'=10’传递给格式化程序‘10’ 这表明,在f-字符串中看起来像赋值操作符的并不总是赋值运算符。F-字符串解析器使用:指示格式选项。为了保持向后兼容性,必须在f-字符串中使用赋值运算符。如上所述,不建议使用外派运算符。
https://stackoverflow.com/questions/73768129
复制相似问题