为什么我的全局变量不是全局变量?
问题描述:
我有以下线在我的剧本的开头:为什么我的全局变量不是全局变量?
global lotRow
global lotCol
然后,后来,我设置lotRow和lotCol作为使用函数的字符串。然后,甚至更晚,我做到以下几点:
getIDFromAxes(int(lotRow), int(lotCol))
这给了我:
getIDFromAxes(str(lotRow), str(lotCol))
NameError: global name 'lotRow' is not defined
我有高清()在最后打印的“批”的字符串,以确保它们设置,而且由于某些原因,我仍然无法访问它们。
答
global
语句不在脚本的开头;他们进入一个需要访问全局变量的函数。因此,而不是:
global x
x = 0
def increment_x():
x += 1
return x
你需要使用:
x = 0
def increment_x():
global x
x += 1
return x
答
当您试图访问您的全局变量的函数内部时,您需要使用关键字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
但我'global'报表和'getIDFromAxes(INT(lotRow),INT(lotCol))'都在主脚本,因此相同的功能,正确吗? – tkbx
如果他们在相同的功能,为什么你希望他们成为全球?我认为你最好发布一些实际的代码。 –
@DanielRoseman在那里弄了一会儿,忘了getIDFromAxes()'是一个函数。将全局语句移入该函数似乎正在工作。 – tkbx