python-import文件结构

测试

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部分,当import test2.py时,会进入test2.py,把除了main的部分都执行一遍。所以执行print "file: test2.py, before main, sys.argv[0]:%s"%sys.argv[0]。这里的import有点像直接贴过来,所以说sys.argv[0]用的是test.py。但是也要注意,即使import test2.py两次,也只执行一次。

3,然后test.py继续执行到print语句。

4,最后再执行main的部分,但是test2.py因为并没有主动执行,所以不会执行。

5,最后执行的os.system()相当于直接在命令行执行,所以sys.argv[0]就是test2.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值