Python全局变量疯狂

标签 python

你有三个文件:main.py、second.py 和 common.py

通用.py

#!/usr/bin/python
GLOBAL_ONE = "Frank"

主要.py

#!/usr/bin/python
from common import *
from second import secondTest

if __name__ == "__main__":
    global GLOBAL_ONE
    print GLOBAL_ONE #Prints "Frank"
    GLOBAL_ONE = "Bob"
    print GLOBAL_ONE #Prints "Bob"

    secondTest()

    print GLOBAL_ONE #Prints "Bob"

第二个.py

#!/usr/bin/python
from common import *

def secondTest():
    global GLOBAL_ONE
    print GLOBAL_ONE #Prints "Frank"

为什么 secondTest 不使用其调用程序的全局变量?如果事实上它不是,那么称其为“全局”有什么意义!?

为了让 secondTest(或我从 main 调用的任何外部函数)识别和使用正确的变量,我错过了什么?

最佳答案

global 意味着这个模块是全局的,而不是整个程序。当你做的时候

from lala import *

您将lala 的所有定义作为locals 添加到此模块

因此,在您的情况下,您会得到两份 GLOBAL_ONE

关于Python全局变量疯狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119287/

相关文章:

python - 为现有的 Plone 3.3.4 安装向 Python 添加 SSL 支持

python - 将悬停工具标签添加到 Bokeh 中的跨度?

python - Appengine - 从标准数据库升级到导航台 - ReferenceProperties

python - Pandas:在映射操作之前设置具有重复值的列的索引

python - 将额外的参数传递给Django Rest Framework中的嵌套Serializer

python - 使用 tf.eager 训练复杂的 nn 模型(使用 TF2 符号支持效果更好)

python - 如何对动态数据框进行OLS回归并估计斜率系数?

python - 在python中重命名字典键/值

python - PsychoPy 重新打开窗口

python - 编写一个使用 *args 添加列表元素的函数