python-importファイル構造

1463 ワード

テスト
test.py
# -* - coding: UTF-8 -* -
import sys,os
import test2
import test2# 
print "file: test.py, before main, sys.argv[0]:%s"%sys.argv[0]
if __name__ == "__main__":
    print "file: test.py, in main, sys.argv[0]:%s"%sys.argv[0]
    os.system("python test2.py")
test2.py
# -* - coding: UTF-8 -* -
import sys
print "file: test2.py, before main, sys.argv[0]:%s"%sys.argv[0]
if __name__ == "__main__":
    print "file: test2.py, in main, sys.argv[0]:%s"%sys.argv[0]
コマンド
$python test.py
出力
file: test2.py, before main, sys.argv[0]:test.py
file: test.py, before main, sys.argv[0]:test.py
file: test.py, in main, sys.argv[0]:test.py
file: test2.py, before main, sys.argv[0]:test2.py
file: test2.py, in main, sys.argv[0]:test2.py
分析
1 pythonファイルtest.py、コマンドpython testを実行する場合.pyでは、importおよび最初の文が実行され、mainセクションが実行されます.
2、例えばここのtest.py、コマンドpython test.py、import test 2の場合、importセクションが先に実行されます.pyの場合、test 2に入ります.py、main以外の部分を全部実行します.したがってprint"file:test 2.py,before main,sys.argv[0]:%s"%sys.argv[0].ここのimportは直接貼ってくるようなものなのでsys.Argv[0]はtestです.py.ただし、import test 2でも注意してください.pyは2回、1回のみ実行されます.
3、それからtest.pyはprint文に続行します.
4,最後にmainの部分を実行するがtest 2.pyはアクティブに実行されないため、実行されません.
5,最後に実行するos.System()はコマンドラインで直接実行することに相当するのでsys.Argv[0]はtest 2である.py