如果导入的__name__ ==“__ main__”

时间:2017-10-02 14:40:06

标签: python import nested main

我正在处理两个python文件。一旦我完成了,我打算从另一个人那里打电话给你:

main.py
import os, re, time, logging, sys, subprocess, operator, datetime, pprint, dbfread, collections, calendar, xlwt, xlrd, errno, platform, stat
import subfile
# A long body of codes that does things

subfile.py
import os, re, time, logging, sys, subprocess, operator, datetime, pprint, dbfread, collections, calendar, xlwt, xlrd, errno, platform, stat
# Another long body of codes that does things

如果我调用main.py,我希望它也会运行subfile.py。有时,我会单独运行subfile.py,并希望它能够自行运行。现在,在subfile.py中,我应该将导入命令嵌套在if __name__ == "__main__"下吗?

subfile.py
if __name__ == "__main__": 
    import os, re, time, logging, sys, subprocess, operator, datetime, pprint, dbfread, collections, calendar, xlwt, xlrd, errno, platform, stat
# Another long body of codes that does things

2 个答案:

答案 0 :(得分:1)

不,作为一般规则,将导入放在文件的顶部,让python管理它。在某些情况下,导入应该放在类/方法/函数中,但这不是其中之一。

如果事情变得更复杂,您可以将导入放在包的__init__.py中。

答案 1 :(得分:1)

如果您的动机是避免多次导入同一个模块,请不要害怕。

导入已导入的模块几乎是无操作,基本上只是模块字典中的一次查找。

所以没有任何好处,只是让程序变得更复杂,更不易读的缺点。