0

在这里发布整个实际代码没有多大意义,所以我会尽力概括我的问题。函数(让它命名为 x)在代码的开头定义。然后从单独的 .py 文件中导入类(它有一个方法 z,z 最终调用 x)。该类的对象被创建。调用 z 后,出现“未定义全局名称 'x'”错误。然后我想我将 .py 文件中的所有代码粘贴到一个文件中,将 def(x) 放在它上面,看看会发生什么。当然,它按预期工作。不明白以前的方式有什么问题(我更愿意坚持),它几乎不一样吗?

4

1 回答 1

2

全局变量是每个模块的,函数在定义它们的模块中查找全局变量。

因此Foo,在名为 的模块中定义的类bar需要访问名为的函数spam,将在它自己的命名空间中查找该函数,因此在模块中bar

如果函数要在导入它们的模块中查找全局变量,则必须重复导入任何想要使用的函数的所有依赖项。这不切实际。

于 2013-02-12T17:22:59.817 回答