Ben*_*Ben 11 python global-variables python-import
我是python的新手,所以请原谅可能是一个非常愚蠢的问题.
基本上,我有一个名为_debug的全局变量,用于确定脚本是否应该输出调试信息.我的问题是,我不能在一个不同的python脚本中设置它而不是使用它的那个.
我有两个脚本:
one.py:
-------
def my_function():
if _debug:
print "debugging!"
two.py:
-------
from one import *
_debug = False
my_function()
Run Code Online (Sandbox Code Playgroud)
运行two.py会生成错误:
NameError: global name '_debug' is not defined
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?
Jam*_*ady 16
我担心的问题不仅仅是领先的下划线.
当您调用时my_function(),它仍然不会debug在其命名空间中包含您的变量,除非您从中导入它two.py.
当然,这样做意味着你最终one.py -> two.py -> one.py会得到循环依赖(),NameError除非你重构导入和声明各种东西的地方,否则你将得到s.
一种解决方案是创建一个简单的第三个模块,它定义了这样的"常量",可以从任何地方安全地导入,例如:
constants.py
------------
debug = True
one.py
------
from constants import debug
#...
two.py
------
from constants import debug
#...
Run Code Online (Sandbox Code Playgroud)
但是,我建议只使用内置的日志记录模块 - 为什么不呢?它易于配置,使用更简单,可靠,灵活且可扩展.