python解释器遇到if __name__==__main__会如何做?
python解释器遇到if __name__=="__main__"会如何做
# Threading example import time, threaddef myfunction(string, sleeptime, lock, *args):while True:lock.acquire()time.sleep(sleeptime)lock.release()time.sleep(sleeptime)if __name__ == "__main__":lock = thread.allocate_lock()thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))
当Python解释器读取源文件时,它会执行其中的所有代码
在执行代码之前,它将定义一些特殊变量。例如,如果Python解释器将该模块(源文件)作为主程序运行,则它将特殊__name__变量设置为"__main__"。如果从另一个模块导入此文件,__name__则将其设置为模块的名称。
在这个脚本的情况下,让我们假设它作为主要功能执行
python threading_example.py
在命令行上,设置特殊变量后,它将执行import语句并加载这些模块。然后它将评估def块,创建一个函数对象并创建一个myfunction指向函数对象的变量。然后它将读取该if语句并看到它__name__确实相等"__main__",因此它将执行那里显示的块。
这样做的一个原因是,有时您可以编写一个.py可以直接执行的模块(文件)。或者,它也可以导入并在另一个模块中使用。您可以仅在希望将模块作为程序运行时执行该代码,而在有人只想导入模块并自行调用函数时不执行该代码。
注意:如果将代码放在函数定义之前,它将在__name__检查之前执行。
print("This code executes before main.") def functionA():print("Function A")def functionB():print("Function B")if __name__ == '__main__':functionA()functionB()
如果此模块确实用作主脚本,则此代码将导致:
This code executes before main. Function A Function B
如果导入此模块而不是用作主脚本,则在导入时获得以下内容:
This code executes before main.
本文转载自:python黑洞网 原文链接:http://www.pythonheidong.com/blog/article/30/
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__':
引子 在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间.当你把这个模块导入到test2.py模块中,接下来如果在test2. ...
- 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用
文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...
最新文章
- 基于SSH实现在线课程学习系统
- SpringBoot项目依赖本地jar包
- 分布式系统的那些事儿(六) - SOA架构体系
- python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
- c#使用Transactions类完成多个数据库的事务操作(分布式事务处理)
- 分布式session之redis解决方案实现
- NVR+DVR+CVR
- python 已知平行四边形三个点,求第四个点
- 重装系统后计算机无法启动,重装系统后电脑重启没反应是怎么回事?如何解决呢?...
- [C#] 控制系统音量-第二章
- 怎么让电脑上的图片全屏显示呢
- 《天道》之丁元英的30句经典语录
- 前端安全(http)
- 保障4-0521任务打卡
- Linux不是Windows(转)
- 大学计算机基础 一 实验报告,《大学计算机基础》实验报告实验一.docx
- Mobl试用之helloword
- 天池大赛-心跳信号分类预测:建模与调参
- arduino感应LED灯
- 西门子S7-200 SMART/828d PLC数据采集、远程调试
热门文章
- laravel wherehas 替换表前缀_AB(罗克韦尔)PLC如何快速创建Logix5000变量表
- ElasticSearch之term vector
- wifi信号衰减与距离关系_有线网络PK无线WiFi,孰胜孰负?
- (96)分频器设计(任意分频器)
- (1)触发器systemverilog与VHDL编码
- nc65 单据非向导开发 源代码_最受Java开发者喜爱的5款开发工具
- python冒泡排序代码和注释_python代码求助(两个实验任务,尽量写出注释~)
- 10.FreeRTOS学习笔记-中断管理
- 9.FreeRTOS学习笔记-任务通知
- STM32F103_步进电机