关于python:如果导入的__name__ ==“__ main__”

if __name__ == “__main__” on Imports

我正在处理两个python文件。一旦我完成了,我计划从另一个打电话给另一个:

1
2
3
4
5
6
7
8
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__"下吗?

1
2
3
4
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


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

导入一个已经导入的模块几乎是不允许的,基本上只是在模块的字典中查找一次。

所以没有收益,只是让程序稍微复杂一点和可读性降低了一点。


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

如果情况变得更复杂,您可以将进口货物放在__init__.py中用于包装。