1
有一個奇怪的行爲與範圍可見性,我無法在手冊中找到它。因此,這裏是我的代碼簡化到基地的一塊。Python中奇怪的可見性範圍行爲
from server import WWW_DOCUMENT_ROOT
def write_config(project_abs_path):
print WWW_DOCUMENT_ROOT
# WWW_DOCUMENT_ROOT = 'A'
在這裏,如果最後一行 - 分配 - 已被註釋掉,print WWW_DOCUMENT_ROOT
工作正常,並打印全球的價值。 如果賦值語句取消註釋 - print WWW_DOCUMENT_ROOT
停止工作並且說'WWW_DOCUMENT_ROOT' referenced before assignment
。
顯然問題是用global WWW_DOCUMENT_ROOT
語句修復的,但是爲什麼它的行爲不同取決於變量是否在代碼中稍後分配。這是不穩定和不明顯的,或者我在這裏沒有得到什麼。這是爲什麼呢?
python 2.7.3
[簡要說明Python的作用域規則的(可能重複http://stackoverflow.com/questions/291978/短描述-的-蟒-作用域規則) –