使所有变量全球化

时间:2012-05-27 16:12:46

标签: python variables global-variables

我的Python脚本中有一个函数,其中创建了多个变量,我想在其他函数中使用它们。我想过使用global,但我认为这样做是不正确的。

那么有谁能告诉我在函数中为其他函数创建变量的最佳方法是什么?

4 个答案:

答案 0 :(得分:8)

将变量组织为class。在一个函数中实例化该类,然后将实例传递到您需要的任何位置。

经验法则:如果在某些方面做出一些全局性的东西似乎是一个很好的解决方案,那么就不要这样做。总有一种更好的方式。

答案 1 :(得分:2)

您可以创建一个“命名空间”对象 - 一个充当命名空间的对象,以保持全局命名空间的清晰:

class namespace():
    pass

global_data=namespace()

def add_attributes(obj):
    obj.foo="bar"

add_attributes(global_data)
print (global_data.foo)  #prints "bar"

但是,这只比使用global关键字稍微好一点。你确实想要保罗所提到的课程。

答案 2 :(得分:2)

将变量声明为函数的属性。

def f1():
    f1.a=100
    f2.b=200

def f2():
    print(f1.a,f2.b)

f1()
f2()

<强>输出:

100 200

答案 3 :(得分:1)

这可能是实现课程的好地方。这有很多优点。 See Classes in the tutorials