python - 在函数内部定义全局

标签 python function variables global

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

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 编译器,分配给名称应该设置一个全局变量,而不是局部变量。如果没有该语句,函数中对变量的所有使用一旦用于绑定(bind),就将成为本地变量。

请注意,您必须调用该函数;仅函数中存在的 global 语句不足以绑定(bind)名称。 Python 没有“声明”,名称仅通过绑定(bind)操作存在。请参阅Naming and binding .

如果您仍然看到异常,则说明从未执行过赋值。您尚未调用该函数,或者从未到达 name = value 语句(因为函数在该行之前返回或引发异常)。

关于python - 在函数内部定义全局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243206/

相关文章:

python - 安装了 Django AllAuth,找不到登录或注册

python - 如何从 GoogleCredentials 获取 projectId?

我可以在不为其中一个参数指定类型的情况下声明一个函数吗?

arrays - 在数组中的每个句子中搜索关键字 - Swift

python - 是否可以默认将所有 Jupyter notebook cells 设为 bash 类型?

python - 比较Python列表中的数字序列

c++ - 函数在控制台中运行两次

shell - 将 "execute"函数的返回值保存到变量 vimscript

php - 将变量插入 header 位置 PHP

PHP: session 变量