我继承了一些看起来像这样的Python代码:
name = 'London'
code = '0.1'
notes = 'Capital of England'
ev = model.City(key=key, code=code, name=name or code, notes=notes)
本着学习的精神,我想知道name or code
论证发生了什么。这是说'如果它不为空,请使用name
,否则使用code
'?
提供这样的多个可能参数的技术术语是什么,所以我可以在Python文档中阅读它?
谢谢!
答案 0 :(得分:13)
几乎。它说使用名称,如果它没有评估为false 。 Things that evaluate to false包括但不限于:
False
(), [], ""
){}
)None
修改在评论中添加了SilentGhost提供的链接。
答案 1 :(得分:7)
在python中,or
运算符返回第一个操作数,除非它的计算结果为false,在这种情况下它返回第二个操作数。实际上,如果未指定name
,则会使用code
,默认回退为name
。
答案 2 :(得分:1)
启动Python控制台:
>>> name = None
>>> code = 0.1
>>> name or code
0.10000000000000001
如果name的计算结果为false,则表达式将计算为代码。否则将使用名称。
答案 3 :(得分:1)
正确,该习语采用评估为True的第一个值(通常不是None)。请小心使用,因为有效值(如零)可能会无意中被抛弃。更安全的方法是:
if name is not None:
# use name
或
name if name is not None else code
答案 4 :(得分:0)
你已经大致正确了,但'null'并不正是决定的。基本上任何评估为false(0,false,空字符串'')的东西都会导致显示第二个字符串而不是第一个字符串。在这个意义上,'x或y'等同于:
如果x:x
否则:y
一些控制台播放:
x =''
y ='咆哮'
x或y
-'roar“
x ='arf'
x或y
-'arf“
x =假 x或y
-'roar'
答案 5 :(得分:0)
本着学习的精神,我想 知道这个名字或者是怎么回事 代码参数。这是说'使用 如果名称不为null,则使用 代码'?
是的,但是python中的Null可能意味着不止一件事(空字符串,没有..)
就像你的情况一样:
>>> name = 'London'
>>> code = 0.1
>>> name or code
'London'
>>> name = ''
>>> code = 0.1
>>> name or code
0.1000....
但奇怪的是,函数参数有时可以是整数,有时可以是字符串。
希望这可以提供帮助:=)