为什么Python没有main函数?
    
文章转自:深度学习这件小事
    
      
  
推荐阅读: 终于来了,【第三期】 彭涛Python 爬虫特训营!!
众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。 其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非常笨拙的代码。 在开始讨论之前,我们先来回答以下两个问题:
    
- 
      
所谓的“main函数”究竟是什么意思?
 - 
      
为什么有些编程语言必须编写main函数?
 
    
    
- 
      
main函数名是必须的,这意味着必须有一个主函数。
 - 
      
最多只能有一个main函数,这意味着程序的入口是唯一的。
 - 
      
语法格式有特定要求,书写形式也相对固定。
 
为什么必须强制main函数作为入口?
    
    
- 
      
Python是一种解释语言,即脚本语言。运行过程是从上到下,逐行进行的,这意味着它的起点是已知的。
 - 
      
每个.py文件都是一个可执行文件,可作为整个程序的入口文件,意味着该程序的入口很灵活,而且无需遵循任何约定。
 - 
      
有时运行Python项目时不需要有指定入口文件(命令行比较常见,例如“ python -m http.server 8000”),可能是因为该项目中有main.py文件,在软件包中作为“文件”来执行。
 
    
        
            
              
          
          
            # main file
          
          
            def main():
          
          
                ……
          
          
            if __name__ == '__main__':
          
          
                main()
          
          
            
              
          
        
    这不就是Python的main函数吗?相信很多人都这么认为! 不,并不是。 除了函数名是“main”之外,这段代码与我们前面介绍的main函数没有半点关系,这个函数既不是必须的,也不能确定程序的执行顺序。即便没有上面这样的main函数,也不会有任何的语法问题。 人们想编写一个main函数的主要原因其实是为了强调这是一个主函数,希望人为地将其设置成第一个执行的函数。
    
他们可能认为这个名字的函数更容易记住。
    
但是,我个人不推荐这种写法。 举一个简单的例子,假设只有几十行代码,或者一个脚本文件实现了一个简单的功能(一个爬虫,或画一只乌龟,等等),但都是按照前面的方式编写的。 不推荐if __name__ == '__main__'的写法,因为:
    
- 
      
首先,如果只有一个文件的话,那么这个文件不可能被导出。
 - 
      
其次,如果有多个文件,强烈建议不要将这个语句写在入口文件(main.py)中。从理论上讲,它的内容不应该导出供其他模块使用,因为它是起点。
 - 
      
最后,在多个文件的情况下,也不建议在非入口的文件中写入这条语句,因为这条语句能做的最多也就是编写一些测试代码。即便如此,测试代码也应分开写到专用目录或文件中。
 
    
    
总结
- 
      
打破惯性思维,编写真实的代码。main函数是某些语言的唯一入口,但不应在Python中使用。你应该了解脚本语言的特征,并学习简单而优雅的风格。
 - 
      
你可以使用main.py,而不是编写main函数。由于Python程序的执行单元是脚本文件,而不是函数或类,因此建议将入口文件命名为main.py,并根据需要决定内部的函数。
 - 
      
将main.py作为入口文件。该文件可直接与命令行的“-m”参数结合使用。
 
    
      
            
              ·················END·················
            
          
        我们爬虫第三期来了,加入我们,学更实用,更值钱的 Python 技术!
                  
                    
                      
                      
从0到1系统掌握Python 技术(入门进阶)
2个企业实战项目,4大常用工具
掌握24种反爬策略手段,成为真正爬虫高手
能抓取市面上90%的网站
掌握主流爬虫技术,就业找工作 真正全方位帮助大家从0到1,从 Python 入门到进阶,转行找爬虫工作。
扫码发送「爬虫」咨询

