Python:函数参数的多种可能值

6 投票
6 回答
2651 浏览
提问于 2025-04-16 06:44

我接手了一些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 在评论中提供的链接。

撰写回答