月度归档: 2017 年 6 月

  • Python中”if __name__ == ‘__main__’:”的解析

    Python中if __name__ == '__main__':的解析

    Python 源代码常会在代码最下方看到形如if name == 'main':的语句,下面介绍其作用。

    所有Python模块都有一个内置属性name,其值取决于如何使用模块。

    1. 如果被import,则模块__name__值通常为模块文件名,且不带路径及文件扩展名。
    2. 直接运行,则__name__值为__main__

    所以,if name == 'main'用来判断该模块的使用方式。

    如:

    class UsageTest:
        def __init(self):
            pass
    
        def f(self):
            print('Hello, World!')
    
    if __name__ == '__main__':
        UsageTest().f()
    

    在终端直接运行:

    $ python UsageTest.py
    Hello, World!
    

    import 方式:

    $ python
      >>>import UsageTest
      >>>UsageTest.__name__ # Test模块的__name__
      'UsageTest'
      >>>__name__ # 当前程序的__name__
      '__main__'