python: 如何判断文件是作为导入还是主脚本执行?

17 投票
3 回答
6409 浏览
提问于 2025-04-17 09:28

我正在写一个 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() 函数,把所有的工作都放在这个函数里,然后只在条件语句里面调用这个函数。

撰写回答