为什么我的全局变量不全球?

时间:2012-09-30 22:11:30

标签: python

我的脚本开头有以下几行:

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”字符串以确保它们已设置,但由于某种原因我仍然无法访问它们。

2 个答案:

答案 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