Python:如果不存在则赋值

新手上路,请多包涵

我是 Python 新手 RoR 程序员。我正在尝试找到允许我将变量设置为特定值的语法,前提是它以前没有分配过。基本上我想要:

 # only if var1 has not been previously assigned

var1 = 4

原文由 Spencer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
2 个回答

这是一种非常不同的编程风格,但我总是尝试重写看起来像

bar = None
if foo():
    bar = "Baz"

if bar is None:
    bar = "Quux"

只是:

 if foo():
    bar = "Baz"
else:
    bar = "Quux"

也就是说,我尽量避免某些代码路径定义了变量而其他代码路径没有定义变量的情况。在我的代码中,从来没有一条路径会导致定义的变量集出现歧义(事实上,我通常会更进一步,确保无论代码路径如何, 类型 都是相同的)。这可能只是个人品味的问题,但我发现这种模式,虽然在我写的时候不太明显,但在我以后阅读时更容易理解。

原文由 SingleNegationElimination 发布,翻译遵循 CC BY-SA 3.0 许可协议

您应该将变量初始化为 None 然后检查它:

 var1 = None
if var1 is None:
    var1 = 4

可以写成一行:

 var1 = 4 if var1 is None else var1

或使用快捷方式(但建议检查 None

 var1 = var1 or 4

或者,如果您没有为变量分配任何内容,则该变量名称不存在,因此稍后使用它会引发 NameError ,您也可以使用这些知识来做这样的事情

try:
    var1
except NameError:
    var1 = 4

但我建议不要那样做。

原文由 Anurag Uniyal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题