我试图在python中找出全局变量,虽然有很多论坛帖子和示例,但没有一个真正符合我的需要。问题是:我使用MySQL数据库来接收11个不同的变量。这些变量用于控制目的,例如在特定的时间和日期打开和关闭阀门。我需要这些变量是全局的,它们必须能够在许多其他文件中使用。目前,这些变量只存在于读取数据库并为变量赋值的文件中。在
我的问题是:
当我从数据库中导入变量时,我是否可以简单地将它们指定为该脚本中的全局变量?像这样:
cursor.execute ("select variable1,variable2,....variableN from transaction where TransactionNumber=(select MAX(TransactionNumber) from transaction)")
readfromdb= cursor.fetchone()
variable1,variable2,.....variableN=list(readfromdb)
global variable1,variable2...variableN.
然后将这个文件导入我正在使用的其他文件中?在
我尝试过使用此方法,但收到以下错误:
^{pr2}$我愿意接受其他建议,以使这一过程更有效/更精简。但我唯一的要求是当前正在读取数据库的脚本不能更改。它的基本要求是继续读取和分配数据库变量。我不想告诉你细节,但是这个脚本对于检查我们从数据库接收到的数据并确保它的格式正确以便使用是至关重要的,因为我们将从另一台计算机接收数据。在
留言里有你的答案。只需将
global
语句移到第一次使用任何变量的上方。在您必须在需要为这些名称分配新值的任何函数的顶部重复这些
global
声明。在Juanpa Arrivillaga说得很好。要跨模块边界共享,您需要使用模块名来精确指定它们在哪个模块中定义。
global
语句实际上只帮助在单个模块中的函数和初始化代码之间共享名称。在如果“
source1.py
”创建了一个模块级(“global”)变量或函数name1
,并且您想在“source2.py
”中使用它,则必须在source2.py
文件中import source1
,然后将该变量/函数称为“source1.name1”。在在这一点上,我建议您查看字典或某种类型的自定义类或
namedtuple
对象。你可以用globals来解决这个问题,但它最终看起来就像一只两腿走路的狗。这让人印象深刻,不是因为狗做得好,而是因为狗做得很好。在我将使用对象、字典或named tuple来保存这些字段,这样整个混乱就可以作为参数传递给函数。全局变量变得混乱,特别是在频繁更新的代码中。这将删除所有这些
global
语句。对象的类类型或命名元组的字段列表成为整个模块都可以看到的单个定义点。在相关问题 更多 >
编程相关推荐