main.py:
import package
パッケージ/__init__.py:
# use function to split local and global namespace
def do_import():
print globals().keys()
print locals().keys()
import foo as mod
print locals().keys()
print globals().keys()
do_import()
パッケージ/foo.py:
print 'Hello from foo'
main.py を実行すると、次のように出力されます。
['__builtins__', '__file__', '__package__', '__path__', '__name__', 'do_import', '__doc__']
[]
Hello from foo
['mod']
['__builtins__', '__file__', '__package__', '__path__', '__name__', 'foo', 'do_import', '__doc__']
import
イン__init__.py
は期待どおりに機能しませんでした。グローバル名前空間には、ローカルの「mod」のみにバインドする必要がある「foo」があることに注意してください
exec "import foo as mod" in {'__name__': __name__, '__path__': __path__}
グローバル名前空間の変更を止めることはできません
これはどのように起こりますか?