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 或 code
参数发生了什么。这是否是说“如果不为空,则使用 name
,否则使用 code
”?
提供像这样的多个可能参数的技术术语是什么,以便我可以在 Python 文档中阅读它?
谢谢!
I've inherited some Python code that looks like this:
name = 'London'
code = '0.1'
notes = 'Capital of England'
ev = model.City(key=key, code=code, name=name or code, notes=notes)
In the spirit of learning, I'd like to know what's going on with the name or code
argument. Is this saying 'Use name
if it's not null, otherwise use code
'?
And what is the technical term for supplying multiple possible arguments like this, so I can read up on it in the Python docs?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
几乎。它表示如果计算结果不为 false,则使用名称。 评估为 false 的内容包括但不限于:
False
(), [], ""
){}
)无
编辑添加了SilentGhost在其评论中提供的链接到答案。
Almost. It says use name if it does not evaluate to false. Things that evaluate to false include, but are not limited to:
False
(), [], ""
){}
)None
Edit Added the link provided by SilentGhost in his comment to the answer.
在 python 中,
or
运算符返回第一个操作数,除非其计算结果为 false,在这种情况下,它返回第二个操作数。实际上,这将使用name
,如果未指定name
,则默认使用code
。In python, the
or
operator returns the first operand, unless it evaluates to false, in which case it returns the second operand. In effect this will usename
, with a default fallback ofcode
ifname
is not specified.正确的是,该习惯用法采用第一个计算结果为 True 的值(通常不是 None)。请谨慎使用,因为有效值(如零)可能会无意中被放弃。更安全的方法是这样的:
或者
Correct, that idiom take the first value that evaluates to True (generally not None). Use with care since valid values (like zero) may inadvertently be forsaken. A safer approach is something like:
or
启动 Python 控制台:
如果名称计算结果为 false,则表达式将计算为代码。否则将使用名称。
Fire up a Python console:
In case name evaluates to false the expression will evaluate to code. Otherwise name will be used.
基本上是的,但是 python 中的 Null 可能意味着不止一件事(空字符串,无..),
就像您的情况一样:
但奇怪的是,函数参数有时可以是整数,有时可以是字符串。
希望这能有所帮助:=)
yes basically but Null in python can mean more than one thing (empty string , none ..)
like in your case:
but it weird thew that a function parameter can be integer sometimes and a string other times.
Hope this can help :=)
你已经大致正确了,但“空”并不是真正的决定因素。基本上任何计算结果为 false(0、false、空字符串 '')的内容都会导致显示第二个字符串而不是第一个字符串。从这个意义上说,'x 或 y' 相当于:
if x: x
else: y
一些控制台播放:
You've it it roughly correct, but 'null' is not precisely what decides. Basically anything that will evaluate to false (0, false, empty string '') will cause the second string to be displayed instead of the first. 'x or y' in this sense is kind of equivalent to:
if x: x
else: y
Some console play: