如何确定变量是否在 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,但得到空的空间。据我所知,在将 singleton 导入 print.py 模块后,变量再次初始化。
所以我认为我必须检查它们之前是否在 singleton.py 中初始化:
if not (variable1):
variable1 = ''
if not (variable2)
variable2 = ''
但我不知道该怎么做。或者有一种更好的方法在 python 中使用单例模块,但我不知道:)
I want to use a module as a singleton referenced in other modules. It looks something like this (that's not actually a code I'm working on, but I simplified it to throw away all unrelated stuff):
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
I expect to get output 1/2, but instead get empty space. I understand that after I imported singleton to the print.py module the variables got initialized again.
So I think that I must check if they were intialized before in singleton.py:
if not (variable1):
variable1 = ''
if not (variable2)
variable2 = ''
But I don't know how to do that. Or there is a better way to use singleton modules in python that I'm not aware of :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Init
内部的赋值强制变量被视为局部变量。使用global
关键字来修复此问题:The assignment inside
Init
is forcing the variables to be treated as locals. Use theglobal
keyword to fix this:您可以使用字典vars和全局:
或
编辑:
另外...
例如
You can use de dictionaries vars and globals:
or
Edit:
Also...
e.g.