Python のドキュメントには、「関数のローカルを変更するために execfile() を確実に使用することはできません」と記載されています。ページhttp://docs.python.org/2/library/functions.html#execfile
誰かがこの声明についてさらに詳細を提供できますか? ドキュメントはかなり最小限です。この文は、「両方の辞書を省略した場合、式は execfile() が呼び出された環境で実行される」と非常に矛盾しているように見えます。これはドキュメントにもあります。関数内で excecfile が使用され、新しいスコープ レベルを作成するという点で、execfile が関数と同じように動作する特殊なケースはありますか?
次のような関数で execfile を使用する場合
def testfun():
execfile('thefile.py',globals())
def testfun2():
print a
また、'thefile.py' のコマンドによって作成されたオブジェクト (オブジェクト 'a' など) があります。それらが testfun のローカル オブジェクトになるか、グローバル オブジェクトになるかはどうすればわかりますか? では、関数 testfun2 では、「a」はグローバルに見えるでしょうか? execfile ステートメントから globals() を省略した場合、'thefile.py' 内のコマンドによって作成されたオブジェクトが 'testfun' で使用できない理由を、より詳細に説明できる人はいますか?