2012-05-27 26 views
6

Tôi có một hàm trong tập lệnh Python của tôi, nơi có nhiều biến được tạo và tôi muốn sử dụng chúng trong các hàm khác. Tôi nghĩ đến việc sử dụng global cho điều này nhưng tôi nghĩ rằng nó sẽ là cách không chính xác để làm như vậy.Thực hiện tất cả các biến toàn cầu

Vì vậy, bất kỳ ai cũng có thể cho tôi biết cách nào tốt nhất để tạo biến trong một hàm cho các chức năng khác?

Trả lời

8

Sắp xếp các biến thành một class. Khởi tạo lớp trong một hàm và sau đó chuyển cá thể đến bất cứ đâu bạn cần.

Quy tắc chung: Nếu làm một điều gì đó toàn cầu có vẻ như là một giải pháp tốt tại một thời điểm nào đó, đừng làm điều đó. Luôn luôn có một cách tốt hơn.

2

Bạn có thể tạo một "không gian tên" đối tượng - một đối tượng có chức năng như một không gian tên với mục đích giữ cho không gian tên toàn cầu của bạn rõ ràng:

class namespace(): 
    pass 

global_data=namespace() 

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

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

Tuy nhiên, đây chỉ là phần nhỉnh hơn so với sử dụng các từ khóa toàn cầu . Bạn thực sự muốn một lớp học ở đây như được đề cập bởi Paul.

2

Khai báo các biến làm thuộc tính của hàm.

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

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

f1() 
f2() 

đầu ra:

100 200 
+0

Có một lợi thế để làm điều này thay vì trong một lớp học? – beardc

+0

@BirdJaguarIV Nó có thể được sử dụng nếu một không tốt/quen thuộc với cách tiếp cận hướng đối tượng. –

Các vấn đề liên quan