在我正在研究的项目中,我找到了以下代码:
official = bill.official and employees.loadById(bill.official) or None
or None
的意义是什么?我认为它没有任何改变。
答案 0 :(得分:1)
official = bill.official and employees.loadById(bill.official) or None
对于上述声明,如果bill.official
和employees.loadById(bill.official)
都为true,则官方变量值为True
。
如果bill.official
或employees.loadById(bill.official)
的值为False
,则官方变量值为None
。
答案 1 :(得分:1)
这与变量的真值有关。
没有or None
的情况下,如果bill.official
或employees.loadById(bill.official)
的真值均为False
,则official
变量将具有第一个Falsy变量的值他们。
对于or None
,效果是:
=>如果bill.official
和employees.loadById(bill.official)
均为真实值,则将employees.loadById(bill.official)
分配给official
=>否则,将None
分配给official
。
请参见Truth Value Testing - Python Docs来找出哪些值具有阈值。
答案 2 :(得分:0)
如果employees.loadById(bill.official)
和bill.official
均为True或不是None时,它将返回employees.loadById(bill.official)
的值,但是如果其中1个或多个为None或False则返回None。希望有道理。
示例:
a = 1
b = 2
a and b or None
Out[26]: 2
b and a or None
Out[27]: 1
a = None
b and a or None
a and b or None