在函数中定义全局

2024-04-28 20:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在函数中定义全局变量?像这样:

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

Tags: 函数声明定义defglobal全局变量roodbl1
1条回答
网友
1楼 · 发布于 2024-04-28 20:18:47

只在函数中使用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没有“声明”,名称只通过绑定操作存在。见Naming and binding。你知道吗

如果仍然看到异常,则从未执行分配。要么您尚未调用该函数,要么name = value语句从未到达(因为函数在该行之前返回或引发异常)。你知道吗

相关问题 更多 >