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

发布于 2024-10-01 08:02:29 字数 357 浏览 5 评论 0原文

我继承了一些如下所示的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

病女 2024-10-08 08:02:29

几乎。它表示如果计算结果不为 false,则使用名称评估为 false 的内容包括但不限于:

  • False
  • 空序列 ((), [], "")
  • 空映射 ({})
  • 0

编辑添加了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
  • empty sequences ((), [], "")
  • empty mappings ({})
  • 0
  • None

Edit Added the link provided by SilentGhost in his comment to the answer.

巷子口的你 2024-10-08 08:02:29

在 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 use name, with a default fallback of code if name is not specified.

蓝眼泪 2024-10-08 08:02:29

正确的是,该习惯用法采用第一个计算结果为 True 的值(通常不是 None)。请谨慎使用,因为有效值(如零)可能会无意中被放弃。更安全的方法是这样的:

if name is not None:
  # use name

或者

name if name is not None else code

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:

if name is not None:
  # use name

or

name if name is not None else code
寒尘 2024-10-08 08:02:29

启动 Python 控制台:

>>> name = None
>>> code = 0.1
>>> name or code
0.10000000000000001

如果名称计算结果为 false,则表达式将计算为代码。否则将使用名称。

Fire up a Python console:

>>> name = None
>>> code = 0.1
>>> name or code
0.10000000000000001

In case name evaluates to false the expression will evaluate to code. Otherwise name will be used.

南街九尾狐 2024-10-08 08:02:29

本着学习的精神,我愿意
知道这个名字发生了什么或者
代码参数。这是说‘使用
如果名称不为空,则使用
代码'?

基本上是的,但是 python 中的 Null 可能意味着不止一件事(空字符串,无..),

就像您的情况一样:

>>> name = 'London'
>>> code = 0.1
>>> name or code
'London'
>>> name = ''
>>> code = 0.1
>>> name or code
0.1000....

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

希望这能有所帮助:=)

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'?

yes basically but Null in python can mean more than one thing (empty string , none ..)

like in your case:

>>> name = 'London'
>>> code = 0.1
>>> name or code
'London'
>>> name = ''
>>> code = 0.1
>>> name or code
0.1000....

but it weird thew that a function parameter can be integer sometimes and a string other times.

Hope this can help :=)

戒ㄋ 2024-10-08 08:02:29

你已经大致正确了,但“空”并不是真正的决定因素。基本上任何计算结果为 false(0、false、空字符串 '')的内容都会导致显示第二个字符串而不是第一个字符串。从这个意义上说,'x 或 y' 相当于:

if x: x
else: y

一些控制台播放:

<块引用>
<块引用>

x = ''
y = '咆哮'
x 或 y
-'咆哮'
x = 'arf'
x 或 y
-'arf'
x = 假
x 或 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:

x = ''
y = 'roar'
x or y
-'roar'
x = 'arf'
x or y
-'arf'
x = False
x or y
-'roar'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文