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

时间:2012-01-03 17:14:10

标签: python import

我正在写一个python文件mylib.py

如果mylib.py作为脚本执行,我希望mylib.py能够根据sys.argv执行某些操作。但如果它是从其他脚本导入的,我不希望它这样做。

如何判断我的python文件是导入还是主脚本?

(我之前看过如何做到这一点,但我忘记了。)

3 个答案:

答案 0 :(得分:28)

if __name__ == '__main__':
    # this was run as a main script

这是documentation on __main__

通常这段代码放在模块的底部,保持代码清洁的一种常用方法是创建一个main()函数来完成所有工作,并且只调用条件中的那个函数

答案 1 :(得分:5)

if __name__ == '__main__':
    # goes here only when module is being executed directly

包也可以包含__main__模块,当你执行python -m foo时执行(或执行包含包的zipfile)。

答案 2 :(得分:0)

通过使用(仅在模块以main运行时放置要执行的语句,而不是导入)

 if __name__ == "__main__":
        # this was run as a main script

通常,必须在此 if '块中添加不同的语句,例如模块特定的 doctest 调用或打印语句。默认情况下(运行时) main)' __name__ '变量设置为“__main__”,否则(如果导入)设置为__name__变量'我会得到一个不同的值,很可能是模块的名称。