次の 2 つのスクリプトがあります。
#imptee.py
foo = "abc"
def show():
print "foo from imptee:",foo
#impter.py:
#!/usr/bin/env python
from imptee import *
show()
foo = 123
print "foo from impter:",foo
show()
impter.py を実行すると、次の結果が得られます。
imptee からの foo: abc
impter からの foo: 123
imptee からの foo: abc
変数 foo に 123 を割り当てた後、show() が 123 ではなく 'abc' を出力する理由がわかりません。「from imptee import *」の後、foo と show() は現在グローバル名前空間にあり、ローカル名前空間はありません。検索順序は、ローカルの名前空間、グローバルの名前空間、組み込みの名前空間の順である必要があることは理解しています。それで、それはなぜですか?誰か手を貸してくれませんか?THX!