スコープの可視性で奇妙な動作があり、マニュアルでこれを見つけることができませんでした。したがって、これが私のコードの一部をベースに簡略化したものです。
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