导入模块中全局变量的可见性
我在使用Python脚本导入模块时遇到了一些麻烦。我将尽力描述错误,为什么会遇到错误以及为什么要使用这种特殊方法来解决我的问题(我将在稍后描述): 假设我有一个模块,其中定义了一些实用程序函数/类,这些函数/类引用在此辅助模块将导入到的命名空间中定义的实体(让“ a”是这样的实体): 模块1: def f(): print a 然后,我有了主程序,其中定义了“ a”,我要将这些实用程序导入其中: import module1 a=3 module1.f() 执行该程序将触发以下错误: Traceback (most recent call last): File "Z:\Python\main.py", line 10, in <module> module1.f() File "Z:\Python\module1.py", line 3, in f print a NameError: global name 'a' is not defined 过去(两天前,d'uh)曾提出过类似的问题,并提出了几种解决方案,但是我真的不认为这些符合我的要求。这是我的特定情况: 我正在尝试制作一个Python程序,该程序连接到MySQL数据库服务器并使用GUI显示/修改数据。为了简洁起见,我在一个单独的文件中定义了一堆与MySQL相关的辅助/实用程序功能。但是它们都有一个公共变量,该变量是我最初在实用程序模块中定义的,并且是MySQLdb模块中的游标对象。后来我意识到,游标对象(用于与db服务器通信的对象)应该在主模块中定义,以便主模块和导入到其中的所有对象都可以访问该对象。 最终结果将是这样的: utilities_module.py: def utility_1(args): code which …