我试图将我的代码分布在单独的文件中以提高可读性,并且我遇到了在导入文件中引用未定义的全局名称的麻烦。有没有比在调用时故意将所有必要的值传递给函数更好的解决方案?
我的代码目前是这样的:
#foo.py
import bar
def main():
a = 1
b = bar.Bar()
while True:
a += 1
b.incr()
print a
print b.c
if __name__ == '__main__':
main()
#END foo.py
-
#bar.py
class Bar:
def __init__(self):
self.c = 0
def incr(self):
self.c += a
#END bar.py
它给了我 NameError: global name 'a' is not defined。我是否需要像这样重写 main() :
def main():
b = new bar.Bar()
while True:
a += 1
b.incr(a)
print a
print b.c
并像这样重写incr():
def incr(self,a):
c += a
或者,还有更好的方法?
为了记录,上面的代码被大量抽象。实际代码涉及大量类和函数,它们传递多种类型的许多变量,包括一些大型字典。
提前致谢!