如果我们只阅读它,我们是否需要为变量声明全局?

时间:2012-02-28 18:14:13

标签: python

考虑这个

# global variable
i_am_global = {}

def get_global():
    global i_am_global # declare 1
    if i_am_global is not None:
        return i_am_global
    global i_am_global # declare 2
    i_am_global = do_something()
    return i_am_global
def main():
    get_global()
if __name__ == "__main__":
    main()

在这种情况下,我们需要将全球化? at#declare 1或#declare 2?为什么?

这是因为我听到(所以我问这个问题)全局导致内存开销。请纠正我的理解

谢谢

2 个答案:

答案 0 :(得分:1)

如果您只读过变量,那么您不必使用global,但我个人是出于纪录原因。我还使用了全局变量的命名约定。我不认为global关键字存在内存开销,但自身中的全局变量通常被认为是不合需要的。

答案 1 :(得分:0)

所有顶级函数和类也是全局变量。因此声明任何对象全局都没有问题。

但是您应该理解,任何名称前面没有下划线的变量都可以作为该模块的公共接口和要导入的项目。考虑一下这段代码

#module mutual_imports.py
global_object = 2

def changeGlobalObject():
    global global_object
    global_object = "two"

让我们检查一下这个模块:

>>> from mutual_imports import global_object, changeGlobalObject
>>> global_object
2
>>> changeGlobalObject()
>>> global_object
2
>>> from mutual_imports import global_object
>>> global_object
'two'

那么如果你在不同的时间进行不同的项目,那么你如何看待可能不同的项目呢?

所有可变事物都可以成为某些对象的可变状态,只是因为它更容易和更清晰地处理它。