python: 如何判断文件是作为导入还是主脚本执行?
我正在写一个 Python 文件 mylib.py
我希望这个 mylib.py 文件在作为脚本执行时能够做一些事情,但如果它是从其他脚本中被导入的,我就不想让它做那些事情。
我该如何判断我的 Python 文件是被导入的还是作为主脚本在运行呢?
(我之前见过这种方法,但我忘记了。)
3 个回答
0
通过使用(把你希望在模块作为 main
运行时才执行的语句放在这里,而不是被导入时)
if __name__ == "__main__":
# this was run as a main script
通常,像模块特定的 doctest 调用或者打印语句这样的不同语句需要放在这个if块里。其实,默认情况下(当作为主程序运行时),__name__
这个变量会被设置为 "__main__
",而如果是被导入的话,__name__
变量就会有不同的值,通常是模块的名字。
5
if __name__ == '__main__':
# goes here only when module is being executed directly
包里面也可以有一个叫做 __main__
的模块,当你输入 python -m foo
(或者运行包含这个包的压缩文件)时,这个模块就会被执行。
37
if __name__ == '__main__':
# this was run as a main script
这里是关于 __main__
的 文档。
通常,这段代码会放在模块的底部。为了让你的代码看起来更整洁,一个常见的做法是创建一个 main()
函数,把所有的工作都放在这个函数里,然后只在条件语句里面调用这个函数。