2012-05-27 91 views
6

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

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

回答

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

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

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

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

f1() 
f2() 

输出:

100 200 
+0

是否有优势,这样做,而不是一类? – beardc

+0

@BirdJaguarIV如果不擅长/熟悉面向对象的方法,可以使用它。 –