python项目中为什么经常看见“ if __name__ == ‘__main__’:”?

简介: 前言尽管大家在编写python会允许你像shell脚本一样,把大量代码堆积在一起,但是,有很多python入门的书籍,都会建议封装一个函数去写(面向对象也可以写),然后在最后统一调用,例如这样 :def main(): #具体代码 if __name__ == '__main__': main()很多文章都会说这是由于代码样式等原因,但实际上,不这样写,有时会直接导致错误。

前言
尽管大家在编写python会允许你像shell脚本一样,把大量代码堆积在一起,但是,有很多python入门的书籍,都会建议封装一个函数去写(面向对象也可以写),然后在最后统一调用,例如这样 :

def main(): 
#具体代码   
if __name__ == '__main__':
    main()

很多文章都会说这是由于代码样式等原因,但实际上,不这样写,有时会直接导致错误。

例如,打开python的一个字节的class变量部分,可以在这里看到在线版本,然后在中间复制示例代码,运行,就可以看到预期的正确结果。

但是现在将代码中的所有“swaroop”替换为“xxx1”,将所有“kalam”替换为“yyy1”,然后再次运行,在程序结束时,您将得到这样一个奇怪的错误(python 2.6.5实验):

异常属性错误:>忽略中的“nonetype”对象没有属性“population”

也就是说,如果我们改变变量名,程序就会出错…

原因是,当Python最终销毁所有类和对象时,它不处理这些对象之间的依赖关系,而是根据变量的名称决定某种顺序操作。因此,Person类本身在YYY2之前就被销毁了,所以当您解构YYY2时,您将执行它的Del_()方法,并发现父类已经不存在了。~~

这在Python解析器中应该是一个bug,但是如果您将本例中类人员之外的所有代码写入一个main()函数并通过上面的方法调用它,就不会发生这种情况。

所以,你最好不要太注意几行代码,养成这个好习惯。

小编推荐一个学python的学习qun 740322234
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分

享!

相关文章
|
1天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
16 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
20天前
|
Python
Python 项目及依赖管理工具技术选型
【8月更文挑战第30天】在进行Python项目及依赖管理时,有多种工具可供选择。虚拟环境工具有`virtualenv`和内置的`venv`,可为项目创建独立环境,避免依赖冲突。依赖管理工具有`pip`、`pipenv`和`poetry`,分别用于安装包、管理依赖并确保版本一致性。选型时需考虑项目需求、团队协作、易用性和社区支持等因素。
29 10
|
23天前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
20天前
|
测试技术 开发者 Python
FastAPI的神奇之处:如何用Python引领Web开发的新浪潮,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,Web应用至关重要,而FastAPI作为高性能Python Web框架,凭借简洁的语法与高效的开发体验,备受开发者青睐。本文将介绍FastAPI的基础概念、使用方法及最佳实践,涵盖路由、模板、请求对象等核心概念,并探讨其优势与社区扩展,助您高效构建Web应用。
49 1
|
20天前
|
存储 JSON 数据安全/隐私保护
"FastAPI身份验证与授权的奥秘:如何用Python打造坚不可摧的Web应用,让你的项目一鸣惊人?"
【8月更文挑战第31天】在现代Web开发中,保证应用安全性至关重要,FastAPI作为高性能Python框架,提供了多种身份验证与授权方式,包括HTTP基础认证、OAuth2及JWT。本文将对比这些机制并附上示例代码,展示如何使用HTTP基础认证、OAuth2协议以及JWT进行用户身份验证,确保只有合法用户才能访问受保护资源。通过具体示例,读者可以了解如何在FastAPI项目中实施这些安全措施。
54 1
|
20天前
|
存储 数据库 开发者
Web2py的神秘力量:如何用Python打造快速原型设计与开发,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,快速原型设计至关重要。Web2py作为一款Python Web框架,凭借其简洁的语法和高效开发流程受到开发者青睐。本文通过在线调查问卷系统的案例,展示Web2py在快速原型设计中的应用,包括需求分析、数据库设计、表单创建及路由实现,并提供示例代码,帮助读者理解其最佳实践。
13 1
|
24天前
|
算法 搜索推荐 数据处理
|
23天前
|
算法 程序员 开发者
Python编程之旅:从零基础到项目实现
【8月更文挑战第28天】本文是一篇面向Python初学者的入门教程,旨在帮助读者从零开始学习Python编程,并最终能够独立完成一个小型项目。文章首先介绍了Python的基本概念和语法,然后通过一个简单的例子展示了如何用Python解决实际问题。接着,文章详细介绍了Python中的函数、类和模块等高级特性,以及如何使用这些特性来组织和管理代码。最后,文章提供了一个小型项目的完整实现过程,包括需求分析、设计、编码和测试等步骤,以期让读者能够将所学知识应用到实际项目中。
yolov5项目如何安装pycocotools和opencv-python?
本文提供了解决yolov5项目中安装pycocotools和opencv-python包失败的两种方法:手动安装或使用国内镜像源进行安装。
yolov5项目如何安装pycocotools和opencv-python?
|
7天前
|
JSON JavaScript 前端开发
如何在python下建立cucumber项目
Gherkin语言使用的是主要英文关键词Scenario、Given、when 、And、Then和But等,这些关键词可以转换成中文关键词,场景、假如、当、那么等。根据用户故事,需求人员或测试人员使用Gherkin语言编写好测试场景的每个步骤。
10 0