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

时间:2010-11-08 14:34:53

标签: python boolean-expression

我继承了一些看起来像这样的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文档中阅读它?

谢谢!

6 个答案:

答案 0 :(得分:13)

几乎。它说使用名称,如果它没有评估为false Things that evaluate to false包括但不限于:

  • False
  • 空序列((), [], ""
  • 空映射({}
  • 0
  • 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....

但奇怪的是,函数参数有时可以是整数,有时可以是字符串。

希望这可以提供帮助:=)