python中使用if __name__ == '__main__':
引子
在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间。当你把这个模块导入到test2.py模块中,接下来如果在test2.py模块中执行某一段代码的时,就会自动执行test1.py模块中的foo函数。这样会导致什么问题呢?会导致你原本只想测试当前的代码,又自动执行了另一个模块中的函数。
那如何解决这个问题:
一 导入模块自动执行问题
test1.py# 定义foo函数 def foo():print('from foo...') foo() # from foo...
test2.pyfrom test_1 import test1# 在test2.py模块中打印test1.py模块中的__name__属性发生了变化 print(test1.__name__) # test_1.test1def bar():print('from bar...')bar() # 此时会在当前文件中执行bar函数会自动执行test1模块中的foo函数 ''' from foo... from bar... '''
二 使用if __name__ == '__main__' 解决自动执行问题
因为在python中一切皆对象,其实模块也是一个对象,那么每一个模块中都包含着一个__name__属性,而这个属性会根据模块所在的位置而发生变化。我们可以通过对__name__这个属性进行判断。从而解决因为导入其他模块自动执行的问题。
1、test1.py模块中打印__name__属性。
test1.py # 定义foo函数 def foo():print('from foo...')# 在当前文件中的__name__属性值 print(__name__) # __main__ foo() # from foo...
2、在test2.py模块中执行bar函数
test2.pyfrom test_1 import test1# 在test2.py模块中打印test1.py模块中的__name__属性发生了变化 print(test1.__name__) # test_1.test1def bar():print('from bar...')bar() # 此时会在当前文件中执行bar函数会自动执行test1模块中的foo函数 ''' from foo... from bar... '''
3、在test1.py中添加if __name__ == '__main__'判断
由上述可见,test1.py模块中的__name__会根据执行文件的位置发生变化,由此我们可以通过对__name__属性进行判断调用者是否在当前模块调用函数进行测试。如果不是当前文件执行,就不会执行调用的函数。
test1.py # 定义foo函数 def foo():print('from foo...')# 在当前文件中的__name__属性值 print(__name__) # __main__if __name__ == '__main__': # __name__: test_1.test1foo()
test2.pyfrom test_1 import test1print(test1.__name__) # test_1.test1def bar():print('from bar...')bar() # from bar...
这就是为何在python中要使用if __name__ == ‘__main__’进行对函数功能的测试了!
转载于:https://www.cnblogs.com/kermitjam/p/10693110.html
python中使用if __name__ == '__main__':相关推荐
- 如何简单地理解Python中的if __name__ == '__main__'
如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...
- Python 中的 if __name__ == __main__ 该如何理解
Python 中的 if __name__ == "__main__" 该如何理解 原文链接: http://blog.konghy.cn/2017/04/24/python-en ...
- 2020-12-11 Python中的 if __name__ == “__main__“
Python中的 if __name__ == "__main__" 对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__ ...
- Python中的if __name__ == ‘__main__‘
if name == 'main'的意思是:当.py文件被直接运行时,if name == 'main'之下的代码块将被运行:当.py文件以模块形式被导入时,if name == 'main'之下的代 ...
- 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘
1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...
- 解惑(二)----- 如何通俗地理解Python中的if __name__ == ‘__main__‘
1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...
- 简单理解Python中的if __name__ == '__main__'
1. 摘要 通俗的理解__name__ == 'main':假如你叫小明.py,在朋友眼中,你是小明(name == '小明'):在你自己眼中,你是你自己(name == 'main'). if na ...
- 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用
文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...
- Python 中的 if __name__ == '__main__' 该如何理解
程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要 ...
最新文章
- Android获取内部和SDCard的存储空间
- 推荐11个构建和测试API的顶级工具
- java将字符串逻辑表达式转成布尔值
- JavaCodeTra 猴子选猴王 约瑟夫循环
- CSS鼠标响应事件经过、移动、点击示例介绍
- java EL表达式中${param.name}详细
- 关于js函数未定义not defined引发的感想
- Spring Boot通过@RequestParam接收前端表单传来的数据
- RabbitMQ入门学习系列(三).消息发送接收
- 云图说 | 华为云GPU共享型AI容器,让你用得起,用得好,用的放心
- A Scala Tutorial for Java programmers之(一)Scala入门:Scala例子,以及如何与Java交互
- win系统流畅度测试软件,视频对比:老电脑装Win7、Win10流畅性测试
- 求和(1,2,3.....n使其和为m的所有情况)
- Hector代码笔记
- Python(九)- 音频文字转换
- Web应用程序开发课程总结
- 相爱相杀:移动联通IT支撑回忆录(九)
- 在RedHat Linux下安装惠普磁带机(转)
- 基于SSM框架的个人博客系统项目毕业设计(代码及论文)
- 基于帕累托最优的多目标SNP选择