21得票2回答
Python中的海象运算符在while循环中的应用

我正在尝试理解海象赋值运算符。 经典的while循环在循环内部将条件重新分配为False时中断。x = True while x: print('hello') x = False 为什么使用海豹运算符时这不起作用?它忽略了对x的重新赋值,导致出现无限循环。while x :=...

16得票2回答
为什么Python的海象运算符不能用于设置实例属性?

我刚刚学到,新的海象运算符 (:=) 不能用于设置实例属性,这是无效的语法(会引发SyntaxError)。 为什么? (您能提供官方文档中提到这一点的链接吗?) 我查看了PEP 572,但没有找到这个问题被记录在哪里。 研究 这个答案提到了这个限制,但没有解释或来源: 你不能在对象属性...

16得票2回答
如何使用海豹运算符进行类型提示?

我想为海象运算符表达式进行类型提示,即 while (var: int := some_func()): … 我该怎么做?

13得票2回答
使用三元运算符的海象运算符的正确语法是什么?

通过查看Python-Dev和StackOverflow,Python的三元运算符等效语法为:a if condition else b 通过查看PEP-572和StackOverflow,我了解了什么是海象运算符::= 现在我正在尝试将“海象运算符的赋值”和“三元运算符的条件检查”合并到一个...

12得票2回答
字典推导式中的海象运算符

我想避免在字典解析中对均值进行双重计算,因此尝试使用海象运算符:>>> dic = {"A": [45,58,75], "B": [55,82,80,92], "C": [78,95,90], "D&quo...

10得票1回答
为什么 "if not a := say_empty()" 会引发 SyntaxError 错误?

PEP 572引入了赋值运算符("海象运算符")。 以下代码有效,并输出empty def say_empty(): return '' if a := say_empty(): print("not empty") else: print("empty") ...

8得票1回答
赋值表达式(海豹运算符)的评估顺序

我有以下表达式: >>> a = 3 >>> b = 2 >>> a == (a := b) False 现在,在这个操作之后,a == 2,与预期相符。结果正是我想要的,即将a与赋值右侧比较后再进行赋值。 反转等号操作符的顺序会反...

7得票1回答
在if语句中使用海象运算符无法正常工作

我有一个简单的函数,根据模式输出前缀或None(如果不匹配)。尝试使用海象运算符,但似乎无法正常工作。有什么想法吗? import re def get_prefix(name): if m := re.match(f'^.+(\d\d)-(\d\d)-(\d\d\d\d)$', ...