我无法理解以下行:
result = (status!=None and "off" or "on")
现在,当它被调用时,只status
被分配了一个值(正则表达式搜索的结果)。但是,在此命令之后,result
取值“on”或“off”。
在我未经训练的眼睛看来,这只是一个比较。这个任务是如何进行的?
我无法理解以下行:
result = (status!=None and "off" or "on")
现在,当它被调用时,只status
被分配了一个值(正则表达式搜索的结果)。但是,在此命令之后,result
取值“on”或“off”。
在我未经训练的眼睛看来,这只是一个比较。这个任务是如何进行的?
从文档中:
表达式
x and y
首先计算x
; 如果x
为假,则返回其值;否则,y
评估并返回结果值。表达式
x or y
首先计算x
; 如果x
为真,则返回其值;否则,y
评估并返回结果值。
此外,任何非空字符串在出现在布尔上下文中时都被认为是“真”。
有了这个,我们可以解决您的问题。
由于运算符优先级规则,以下内容:
status != None and "off" or "on"
相当于:
(status != None and "off") or "on"
第一部分,status != None and "off"
评估为:
False
如果status
是None
;"off"
否则整个表达式的(status != None and "off") or "on"
计算结果为:
"on"
如果status
是None
;"off"
否则。可以说,编写此语句的一种更 Pythonic 的方式是:
result = "on" if status is None else "off"