如何找出变量是否在Python中声明?
问题描述:
我想用一个模块作为其他模块中引用的单例。它看起来是这样的(实际上并不是我工作的一个代码,但我简化它扔掉所有东西无关):如何找出变量是否在Python中声明?
main.py
import singleton
import printer
def main():
singleton.Init(1,2)
printer.Print()
if __name__ == '__main__':
pass
singleton.py
variable1 = ''
variable2 = ''
def Init(var1, var2)
variable1 = var1
variable2 = var2
printer.py
import singleton
def Print()
print singleton.variable1
print singleton.variable2
我期望得到输出1/2,而是得到空的空间。我知道,在我将单例导入到print.py模块后,变量再次被初始化。
所以我认为,我必须检查,如果他们在singleton.py前intialized:
if not (variable1):
variable1 = ''
if not (variable2)
variable2 = ''
但我不知道该怎么做。或者有更好的方式来使用python中的单身模块,我不知道:)
答
Init
内的分配强制变量被视为本地。使用global
关键字来解决这个问题:
variable1 = ''
variable2 = ''
def Init(var1, var2)
global variable1, variable2
variable1 = var1
variable2 = var2
答
您可以使用德词典瓦尔和全局:
vars().has_key('variable1')
或
globals().has_key('variable1')
编辑:
也...
'variable1' in vars()
例如
if not 'variable1' in vars():
variable1 = ''
非常感谢!那正是我所期待的。 – 2010-04-09 11:55:44