python - 如何确定变量是否在 Python 中声明?

标签 python variables singleton declaration

我想将一个模块用作其他模块中引用的单例。它看起来像这样(这实际上不是我正在处理的代码,但我简化了它以丢弃所有不相关的东西):

主要.py

import singleton
import printer

def main():
   singleton.Init(1,2)
   printer.Print()

if __name__ == '__main__':
   pass

单例.py

variable1 = ''
variable2 = ''

def Init(var1, var2)
   variable1 = var1
   variable2 = var2

打印机.py

import singleton

def Print()
   print singleton.variable1
   print singleton.variable2

我希望得到 1/2 的输出,但得到的却是空白。我知道在将单例导入 print.py 模块后,变量再次初始化。

所以我认为我必须检查它们之前是否在 singleton.py 中初始化过:

if not (variable1):
   variable1 = ''
if not (variable2)
   variable2 = ''

但我不知道该怎么做。或者有一种我不知道的在 python 中使用单例模块的​​更好方法:)

最佳答案

Init 中的赋值强制将变量视为局部变量。使用 global 关键字来解决这个问题:

variable1 = ''
variable2 = ''

def Init(var1, var2)
   global variable1, variable2
   variable1 = var1
   variable2 = var2

关于python - 如何确定变量是否在 Python 中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2607037/

相关文章:

python - Flask 请求语法错误的问题

mysql - 在过程中使用变量值创建 MySQL 查询

java - 性能问题 : use Singleton object in multi thread environment

java - 通过 Excel 与 Python/Java/其他编程语言访问 Bloomberg 的 API

python - 暗流安装visual studio依赖报错

c - 在Linux中使用管道在2个线程中增加全局变量替代方案

java - 在扩展 Java 中另一个类的类中有 2 个同名变量

C++ 单例模板类使我的程序崩溃

java - 如何编写 Java EE/EJB 单例?

python - CVXPY param*norm 处的 DCP 规则存在问题