范围可见性有一个奇怪的行为,我在手册中找不到这个。所以,这是我简化为基础的代码。
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