我正在尝试检查是否已定义全局文件。
import os, sys, logging...
global my_logger
def init():
if my_logger is None:
print 'Logger needs to be initialized'
然而,当我运行它时,我收到错误:
NameError: global name 'my_logger' is not defined
是否有办法检查变量是否已声明或没有?在运行检查之前,是否必须初始化全局变量?
答案 0 :(得分:4)
正如其他答案所述,全局变量的访问需要全局变量,而不是声明。需要注意的是,如果计划为其分配任何内容,则只需要将变量声明为global
- 您可以在不使用global关键字的情况下从较高范围读取变量:
my_logger = None
def init_logger():
#needs to use global because we assign to the variable
global my_logger
my_logger = MyLogger()
def someOtherFunction():
#no need to use global as we only access the logger
if my_logger:
my_logger.info("i can has logger")
else:
print 'logger not initialized'
答案 1 :(得分:3)
当您需要引用全局变量时,请使用global
关键字,而不是在定义它时:
import os, sys, logging...
my_logger = None
def init():
global my_logger
if my_logger is None:
print 'Logger needs to be initialized'
答案 2 :(得分:3)
您没有正确使用global
关键字,请查找有关该关键字的文档。
但是,作为一般规则,您可以测试全局变量是否定义如下:
defined = 'my_logger' in globals()
if defined:
print('my_logger has not been defined')