2016-07-08 97 views
-3

library.py

str = '' 
def setStr(input): 
    global str 
    str = input 
def getStr(): 
    return str 

現在我可以在模塊的導入和更新他們...我可以做這個沒有全局變量的工作嗎?

module1.py

import library 
import module2 

library.setStr('wow') 
module2.run() 

module2.py

import library 

def run(): 
     print(library.getStr()) 

輸出

wow 

有沒有辦法創建我沒有全局調用顯示的功能?

謝謝!

+1

什麼將你的圖書館做的python日誌庫不行,除了看起來馬虎麼?可能有數千個工時已經投入到python日誌庫中。你爲什麼認爲你或者任何人能夠「以更好的方式複製它」?因爲你唯一的想法是使用大量的全局變量(而不是類和對象),所以前景看起來很暗淡。 –

+0

我的意思是我需要以更好的方式讓我的解決方案..不幸的是,我無法使用日誌庫來滿足我的需求。我意識到我在標題中含糊不清。正在改變。 – user3732466

回答

0

那麼如何複製日誌工作方式,但沒有全局變量用於我的目的?

你不能,因爲logging uses global (module-level) variables to store its configuration。例如,root logger保存在全局變量中。

(我的意思是,你可以有這些變量住在類級別而不是模塊級別,作爲與Logger.manager完成,但它是相同的代碼聞兩種方式。)

+0

如何?我已經通過了方法代碼。它從不使用全局變量。 – user3732466

+0

['root'](https://hg.python.org/cpython/file/tip/Lib/logging/__init__.py#l1669)是一個全局變量。 'Logger.manager'是一個類變量,基本上是一個變相的全局變量。 – Kevin

相關問題