Python:函数参数的多种可能值
我接手了一些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
不为空,就用 name
,否则用 code
”吗?
还有,这种提供多个可能参数的技术术语是什么,我可以在Python文档中查到相关内容吗?
谢谢!
6 个回答
2
没错,这种写法是取第一个评估为真的值(通常不是None)。使用时要小心,因为一些有效的值(比如零)可能会被意外忽略。一个更安全的方法是像这样:
if name is not None:
# use name
或者
name if name is not None else code
7
在Python中,or
这个运算符会返回第一个操作数,除非这个操作数的值是假的。如果第一个操作数是假的,那它就会返回第二个操作数。简单来说,就是如果有一个叫name
的东西,它会用这个值;如果name
没有值或者是假的话,就会用code
这个值作为备用。
15
差不多。它的意思是 如果这个名字的值不等于假,就用这个名字。那些被认为是假的东西包括但不限于:
False
- 空的序列(比如
()
,[]
,""
) - 空的映射(比如
{}
) - 数字0
None
编辑 添加了 SilentGhost 在评论中提供的链接。