我的脚本开头有以下几行:
global lotRow
global lotCol
然后,稍后,我使用函数将lotRow和lotCol设置为字符串。然后,即使以后,我也会这样做:
getIDFromAxes(int(lotRow), int(lotCol))
这给了我:
getIDFromAxes(str(lotRow), str(lotCol))
NameError: global name 'lotRow' is not defined
我有def()在末尾打印“lot”字符串以确保它们已设置,但由于某种原因我仍然无法访问它们。
答案 0 :(得分:4)
global
语句不会出现在脚本的开头;它们进入需要访问全局变量的函数内部。所以而不是:
global x
x = 0
def increment_x():
x += 1
return x
您需要使用:
x = 0
def increment_x():
global x
x += 1
return x
答案 1 :(得分:2)
在试图访问全局变量的函数内部时,您需要使用关键字global
,否则它将查找本地定义 - 当然不存在。
global global_variable
def set_var ():
global global_variable
global_variable = 3
def print_var ():
global global_variable
print int(global_variable)
set_var ()
print_var ()
global_variable = 321
print_var ()
<强>输出:强>
3
321