我是 Python 新手 RoR 程序员。我正在尝试找到允许我将变量设置为特定值的语法,前提是它以前没有分配过。基本上我想要:
# only if var1 has not been previously assigned
var1 = 4
原文由 Spencer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是 Python 新手 RoR 程序员。我正在尝试找到允许我将变量设置为特定值的语法,前提是它以前没有分配过。基本上我想要:
# only if var1 has not been previously assigned
var1 = 4
原文由 Spencer 发布,翻译遵循 CC BY-SA 4.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 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答895 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
这是一种非常不同的编程风格,但我总是尝试重写看起来像
只是:
也就是说,我尽量避免某些代码路径定义了变量而其他代码路径没有定义变量的情况。在我的代码中,从来没有一条路径会导致定义的变量集出现歧义(事实上,我通常会更进一步,确保无论代码路径如何, 类型 都是相同的)。这可能只是个人品味的问题,但我发现这种模式,虽然在我写的时候不太明显,但在我以后阅读时更容易理解。