在函数内部定义全局
Defining global inside a function
是否可以在函数内定义全局变量?像这样:
def posities():
global blauw
blauw = {"bl1":[0], "bl2":[0],"bl3":[0],"bl4":[0]}
global geel
geel = {"ge1":[0], "ge2":[0],"ge3":[0],"ge4":[0]}
global groen
groen = {"gr1":[0], "gr2":[0],"gr3":[0],"gr4":[0]}
global rood
rood = {"ro1":[0], "ro2":[0],"ro3":[0],"ro4":[0]}
global ingenomenPos
ingenomenPos = []
或者我必须先在函数外声明变量?因为当我在函数内部定义它们并尝试从另一个函数访问它们时,它无法识别它。所以我想声明全局变量而不先在函数外声明它们。
所以我尝试使用这种方法访问这些全局变量:
def bezet():
print (str(ingenomenPos))
导致错误:
NameError: name 'ingenomenPos' is not defined
仅在函数中使用 global
语句,别处(它在其他地方无效)。是的,它会起作用,不,你不需要先创建全局外部。
这很容易在解释器中测试:
>>> foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> def bar():
... global foo
... foo = 'baz'
...
>>> bar()
>>> foo
'baz'
global
语句告诉 Python 编译器,分配给名称应该设置全局变量,而不是局部变量。如果没有该语句,函数中对变量的所有使用一旦被用于绑定就变成局部的。
请注意,您必须调用该函数;函数中仅存在 global
语句不足以绑定名称。 Python 没有 'declarations',名称仅通过绑定操作存在。参见 Naming and binding。
如果您仍然看到异常,则分配从未执行过。您没有调用该函数,或者从未到达 name = value
语句(因为函数在该行之前返回或引发了异常)。
是否可以在函数内定义全局变量?像这样:
def posities():
global blauw
blauw = {"bl1":[0], "bl2":[0],"bl3":[0],"bl4":[0]}
global geel
geel = {"ge1":[0], "ge2":[0],"ge3":[0],"ge4":[0]}
global groen
groen = {"gr1":[0], "gr2":[0],"gr3":[0],"gr4":[0]}
global rood
rood = {"ro1":[0], "ro2":[0],"ro3":[0],"ro4":[0]}
global ingenomenPos
ingenomenPos = []
或者我必须先在函数外声明变量?因为当我在函数内部定义它们并尝试从另一个函数访问它们时,它无法识别它。所以我想声明全局变量而不先在函数外声明它们。
所以我尝试使用这种方法访问这些全局变量:
def bezet():
print (str(ingenomenPos))
导致错误:
NameError: name 'ingenomenPos' is not defined
仅在函数中使用 global
语句,别处(它在其他地方无效)。是的,它会起作用,不,你不需要先创建全局外部。
这很容易在解释器中测试:
>>> foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> def bar():
... global foo
... foo = 'baz'
...
>>> bar()
>>> foo
'baz'
global
语句告诉 Python 编译器,分配给名称应该设置全局变量,而不是局部变量。如果没有该语句,函数中对变量的所有使用一旦被用于绑定就变成局部的。
请注意,您必须调用该函数;函数中仅存在 global
语句不足以绑定名称。 Python 没有 'declarations',名称仅通过绑定操作存在。参见 Naming and binding。
如果您仍然看到异常,则分配从未执行过。您没有调用该函数,或者从未到达 name = value
语句(因为函数在该行之前返回或引发了异常)。