gpt4 book ai didi

python - 是否有与 C# null-coalescing 运算符等效的 Python?

转载 作者:IT老高 更新时间:2023-10-28 12:10:27 26 4
gpt4 key购买 nike

在 C# 中有一个 null-coalescing operator (写成 ??),允许在赋值期间轻松(短)检查空值:

string s = null;
var other = s ?? "some default value";

有没有对应的python?

我知道我能做到:

s = None
other = s if s else "some default value"

但是有没有更短的方法(我不需要重复 s)?

最佳答案

other = s or "some default value"

好的,必须弄清楚 or 运算符是如何工作的。它是一个 bool 运算符,因此它在 bool 上下文中工作。如果值不是 bool 值,则将它们转换为 bool 值以供运算符使用。

请注意,or 运算符不仅返回 TrueFalse。相反,如果第一个操作数的计算结果为真,则返回第一个操作数,如果第一个操作数的计算结果为假,则返回第二个操作数。

在这种情况下,如果表达式 x 或 yTrue,则返回 x,或者在转换为 bool 值时计算结果为 true。否则,它返回 y。在大多数情况下,这与 C♯ 的空合并运算符的用途相同,但请记住:

42    or "something"    # returns 42
0 or "something" # returns "something"
None or "something" # returns "something"
False or "something" # returns "something"
"" or "something" # returns "something"

如果您使用变量 s 来保存对类实例的引用或 None 的内容(只要您的类没有定义成员 __nonzero__()__len__()),使用与 null-coalescing 运算符相同的语义是安全的。

事实上,Python 的这种副作用甚至可能很有用。由于您知道哪些值的计算结果为 false,因此您可以使用它来触发默认值,而无需专门使用 None(例如错误对象)。

在某些语言中,这种行为称为 Elvis operator .

关于python - 是否有与 C# null-coalescing 运算符等效的 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4978738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com