我想在我的主python脚本中定义一些变量,并在一个单独模块中定义的函数中使用它们。这是一个示例代码。假设主脚本名为main.py,模块名为mod.py。
def fun():
print a
from mod import *
global a
a=3
fun()
现在,这段代码给了我一个错误
NameError: global name 'a' is not defined
任何人都可以解释为什么会产生错误(我的意思是,一个定义为全局的变量应该可用于所有函数,对吧?)什么可能是解决方法?我已经知道这两个选项,并且不想采取任何这些
如果还有其他选择,请提出建议。
我不想采取上述选项,因为
答案 0 :(得分:2)
模块之间共享的全局变量通常是一个坏主意。如果您需要它们(例如出于某些配置目的),您可以这样做:
# define the variable
a = 3
import global_config
def fun():
# use the variable
print(global_config.a)
答案 1 :(得分:1)
这:
定义为全局的变量应该可用于所有函数,对吗?
是不对的。这不是全局变量的工作方式;它们可用于定义它们的模块中的所有函数。
你没有解释你正在做什么或为什么这些解决方案不适合你,但一般来说全局变量是一个坏主意;明确地传递该值几乎总是可行的方法。