2016-01-13 30 views
0

我有一個很多Python文件的項目。某些文件中有一定數量的變量,我喜歡在其他文件中使用。例如,如果在Python中的文件之間共享變量的最簡單方法?

var=10

f1.py定義,什麼是我可以調用/使用其他文件"var"不使用from f1 import var方式?

我試過使用global,但它不適用於所有文件。 謝謝!

+4

爲什麼你不想使用'import'? – BrenBarn

+0

而不是暴露一個變量,而是考慮使用setter和getter函數。看一下'property()'內置函數,它給用戶一個訪問變量的錯覺。 – cdarke

回答

1

您可以用名稱範圍做到這一點:

import f1 
print(f1.var) 
10 

f1.var = 20 

那麼就應該改變所有文件var這是使用變量,import

+0

謝謝,但我得到一個錯誤「AttributeError:'module'object has no attribute'var'」。由於有很多變量,如果有更好的方法調用「var」而不是「f1.var」 」。再次感謝 – Curiosity

+0

你可以用'var = f1.var'重新分配它。但是,你可以在當前文件中使用它,但是如果你修改它,只在該文件中改變的變量不在文件f1中 –

+0

這不會改變除鍵入導入行的文件以外的任何地方的值。 -1 –

0

大多數我遇到的這個問題,我用不同的方法的時代:

  1. 我把在所有使用所有的常量程序可以導入一個單獨的程序中。
  2. 我爲將在幾個模塊中使用的變量創建一個「共享變量對象」。這個對象被傳遞給一個類的構造函數。然後可以在正在使用它們的類中訪問(並修改)這些變量。

所以當程序啓動時,這個類被實例化,然後傳遞給不同的模塊。這也使得它靈活,因爲當你爲這個類添加一個額外的字段時,不需要改變任何參數。

class session_info: 
    def __init__(self, shared_field1=None, shared_field2=None ....): 
     self.shared_field1 = shared_field1 
     self.shared_field2 = shared_field2 

def function1(session): 
    session.shared_field1 = 'stilton' 

def function2(session): 
    print('%s is very runny sir' % session.shared_field1) 

session = session_info()  
function1(session) 
function2(session) 

應打印: 「斯蒂爾頓奶酪是非常鬆軟先生」

相關問題