在编写 Python 代码时,我经常发现自己想要获得类似于 Lisp 的 defvar 的行为。基本上,如果某个变量不存在,我想创建它并为其分配一个特定的值。否则,我不想做任何事情,特别是,我不想覆盖变量的当前值。
我在网上看了一圈,发现了这个建议:
try:
some_variable
except NameError:
some_variable = some_expensive_computation()
我一直在使用它,它工作正常。但是,对我来说,这看起来代码在范式上并不正确。代码是四行,而不是在 Lisp 中需要的 1 行,并且它需要异常处理来处理非“异常”的东西。
上下文是我正在进行交互式开发。随着我改进它,我经常执行我的 Python 代码文件,并且我不想每次运行时都运行 some_expensive_computation()。我可以安排每次启动新的 Python 解释器时手动运行 some_expensive_computation(),但我宁愿做一些自动化的事情,特别是这样我的代码可以非交互地运行。一个季节 Python 程序员将如何实现这一目标?
我正在使用带有 SP3 的 WinXP、通过 Anaconda 1.6.2(32 位)的 Python 2.7.5,并在 Spyder 中运行。