我在 Ruby 中遇到了一个有趣的表达式:
a ||= "new"
这意味着如果没有定义a,“新”值将被分配给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"
正如我们所看到的,解决方案并不那么优雅。所以我想问一下,有没有更好的方法呢?