我是python的新手,並且被某些行爲困惑。python封裝範圍困惑
我有一個名爲d
的目錄。在此目錄中,我有兩個文件:
__init__.py
:
from d import *
和
d.py
:
var = None
def printVar():
global var
print "from d: var=%s" % `var`
從上面d
的目錄,我得到蟒蛇內這種互動:
>>> import d
>>> d.var = 5
>>> d.printVar()
from d: var=None
爲什麼var
沒有從d.py
的角度改變?
我真正的目標是要做到以下幾點:
- 保持
__init__.py
小 - 能夠改變
d.py
-global變量
如果它的確與衆不同,我有多個文件在我的軟件包目錄中,將它們組合成單個文件是次優的。
什麼是可接受的方式來做到這一點?
關於Python的最佳實踐,請注意一點......如果可以,請避免使用「*」導入。有不止一個是模塊會導致問題。不要在'__init __。py'文件中放入任何東西。只需使用'from d import X'風格。不要在模塊外改變模塊中的全局變量。使用一個類來包含這樣的狀態。 – Keith