gpt4 book ai didi

python - python中有没有类似于ruby的||=的表达式

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:40 25 4
gpt4 key购买 nike

我在 Ruby 中遇到了一个有趣的表达式:

a ||= "new"

表示如果没有定义a,则将"new"值赋给a;否则,a 将保持原样。在进行一些数据库查询时很有用。如果设置了该值,我不想触发另一个数据库查询。

所以我在 Python 中尝试了类似的思路:

a = a if a is not None else "new"

失败了。我认为这是因为如果未定义 a,则无法在 Python 中执行“a = a”。

所以我能得出的解决方案是检查 locals() 和 globals(),或者使用 try...except 表达式:

myVar = myVar if 'myVar' in locals() and 'myVar' in globals() else "new"

try:
myVar
except NameError:
myVar = None

myVar = myVar if myVar else "new"

如我们所见,解决方案并不是那么优雅。所以我想问一下,有没有更好的方法来做到这一点?

最佳答案

使用 undefined variable 作为“默认值”有点代码味道。正如您所发现的,它会失败,因为如果 a 不存在则您不能执行 a = a 。最好用一些默认值(比如无)初始化你的变量,然后检查它。所以你几乎找到了解决方案。唯一的问题是,与其让变量未初始化并尝试使用“不存在”作为“缺失”值,不如显式初始化它。所以,不要这样做:

 # code with no initialization. . .
a ||= blah

这样做:

a = None
# code
if a is None:
a = blah

关于python - python中有没有类似于ruby的||=的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574524/

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