每个模块都有自己的全局命名空间。您已将sum_global添加到错误的模块中,但它并未存在于mymodule中。
将sum_global放入mymodule或将其作为参数传递给需要它的函数。
听起来好像你想推迟计算sum_global值,直到你有一个文件名;你可以让populateGlobalList()在这里设置全局;这完全在mymodule:
sum_global = None
def populateGlobalList(filename):
global sum_global
if sum_global is None:
sum_global = "result of your population work"
此函数不返回数据,它在模块中设置全局变量(假设它尚未设置)。
但是,你应该尝试避免创建像这样的全局变量。由于模块的用户必须提供文件名,如果用户代码跟踪populateGlobalList()调用的结果并且显式将其传递给usefulFunction()`call:< / p>import mymodule
sum_global = mymodule.populateGlobalList("bigdict.txt")
result = mymodule.usefulFunction(arg1, arg2, sum_global)
和retool usefulFunction()需要这样的论证。
下一步将是您的模块使用类:
class MyClass(object):
def __init__(self, filename):
self._populate()
def _populate(self):
self.sum = "result of your population work"
def useful_function(self, arg1, arg2):
# do work with self.sum
然后到处使用该课程:
interesting_object = mymodule.MyClass('bigdict.txt')
result = interesting_object.useful_function(arg1, arg2)