Python中的main函数与import用法

2022-11-11 09:01:58
目录
main函数与import用法目录结构如下main函数的作用以及解释python 中name == ‘__main__’ 的作用

main函数与import用法

在python中,如果自己封装的库文件中有函数外的语句,那么这些语句是会在库函数被导入时自动执行的,这样就会出现一些奇怪的问题,一个例子如下所示。

目录结构如下

    A.pyB.py

    B.py中的内容如下:

    def print_B():
        print("B")
    
    print("starting B")

    A.py中使用import导入print_B()方法:

    from B import print_B
    print_B()

    结果如下:

    starting B
    B

    可以发现B.py中的函数外语句是会自动先执行的。但有时候我们确实希望直接运行封装的库能够执行某些功能,但又不希望这些功能在被import的时候被触发,这个时候,就可以把这部分功能显式的放在main方法中。

    修改后的B.py如下所示:

    def print_B():
        print("B")
    
    if __name__ == "__main__":
        print("starting B")

    此时运行A.py,结果如下:

    B

    main函数的作用以及解释

    python>
      经典的英文解释:Make a script both importable and executable中文解释:使脚本可以被调用import并且也可以直接运行

      1、直接运行

      # cat test_fun.py
      def fun():
          print(__name__)
          print('this is fun')
      
      
      if __name__ == '__main__':
          fun()
          print('this is main')
      python test_fun.py
      __main__
      this is fun
      this is main

      2、被调用import

      >>> import test_fun
      >>> test_fun.fun()
      test_fun
      this is fun

      调用导入时:此处输出没有显示”main“,也就是说模块name = ‘main’ 下面的代码并未执行,main函数没有执行。

      这个功能还有一个用处:

      调试代码的时候,在”if name == ‘main‘“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持易采站长站。