Python学习系列之以主程序形式运行(三十)
以主程序形式运行
在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的__name__变量的值为__main__
格式:
if __name__ = '__main__':
pass
举例:
有一个类maincalcdemo,内容如下:
1 2 3 4 | def add(a,b): return a + b print (add( 10 , 20 )) |
在另一个类maindemo中导入maincalcdemo模块,然后输出add方法的执行结果,代码如下:
1 2 | import maincalcdemo print (maincalcdemo.add( 100 , 200 )) |
执行结果:
说明:maindemo类中只调用了maincalcdemo模块的add方法,但是有2个执行结果,分别是30和300,此处应该输出的是300,不应该输出30.那为什么输出结果中有30呢? 原来在maincalcdemo模块中有一个print方法调用了add方法,print(add(10,20))语句时非主程序形式运行的,所以maindemo类会输出30,如何避免输出30呢?只需要将maincalcdemo模块中print方法放入主程序,以主程序的方式运行即可,代码如下:
1 2 3 4 5 6 | def add(a,b): return a + b if __name__ = = '__main__' : print (add( 10 , 20 )) #只有当点击运行maincalcdemo时,才会执行运算 |
修改后再执行maindemo,则不会输出30了
分类:
python系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
2020-03-25 大厂一面面试题合集
2020-03-25 自动化面试selenium 面试题及答案