local variable 'xxx' referenced before assignment
定义了一个全局变量 createTableFlag ,Python的一个函数里面引用这个变量,并改变它的值,
结果报错local variable 'xxx' referenced before assignment,如:
- local variable 'createTableFlag' referenced before assignment
代码如下:
createTableFlag = True
##########################################
# @function 创建记录压缩信息的表单
# @description 如果图片信息存在于数据库中,则表明图片被压缩过,不需要再次压缩
##########################################
def createTableCompressLog():
if createTableFlag :
try:
create_tb_cmd='''
create table compresslog (id varchar(64) primary key , name varchar(64) UNIQUE , path varchar(1024) UNIQUE , size integer , org_size integer , status integer)
'''
#主要就是上面的语句
cu.execute(create_tb_cmd)
createTableFlag = False
except:
logging.info(" table compresslog maybe exist , create table compresslog fail ")
createTableFlag = False
错误的意思就是createTableFlag这个变量在引用前还没有定义,这上面不是定义了么?但是后来我把createTableFlag= True这句去掉就好了。后来想起python中有个global关键字是用来引用全局变量的
createTableFlag = True
##########################################
# @function 创建记录压缩信息的表单
# @description 如果图片信息存在于数据库中,则表明图片被压缩过,不需要再次压缩
##########################################
def createTableCompressLog():
#全局变量 创建表单标识
global createTableFlag
if createTableFlag :
try:
create_tb_cmd='''
create table compresslog (id varchar(64) primary key , name varchar(64) UNIQUE , path varchar(1024) UNIQUE , size integer , org_size integer , status integer)
'''
#主要就是上面的语句
cu.execute(create_tb_cmd)
createTableFlag = False
except:
logging.info(" table compresslog maybe exist , create table compresslog fail ")
createTableFlag = False
原来在python的函数中和全局同名的变量,如果你有修改变量的值就会变成局部变量,在修改之前对该变量的引用自然就会出现没定义这样的错误了,如果确定要引用全局变量,并且要对它修改,必须加上global关键字。
2384

被折叠的 条评论
为什么被折叠?



