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语言面向过 ...
最新文章
- .Net中简单实现发送邮件
- SQLServer 数据库变成单个用户后无法访问问题的解决方法
- 验证url 地址是否是图片
- 元宇宙:Facebook正式改名为Meta,要砸600亿做这件事
- 光伏双反闹剧何时休?
- pat天梯赛练习 L2-006
- 《Java 核心技术卷1 第10版》学习笔记------ 对象包装器、自动装箱、拆箱
- 阿里云2011.9.17招聘会笔试题
- android 5.0 sd卡读写,如何使用为Android 5.0(Lollipop)提供的新SD卡存取API?
- 支付宝开放新玩法:搜商家可领消费券
- iis web服务扩展_Web服务器系统都有哪些类型?都有什么优点呢?
- luogu 大陆争霸 WD yj
- 学习笔记-Bandit-WalkThrough
- 系统安装之十 U盘安装原版win10
- wps编号无法继续_wps的多级编号出问题了
- 清洁代码之道:一份实用关于如何编写和维护干净整洁的好代码的的方法 The Art Of Clean Code...
- 行为设计学-让创意更有黏性
- 震撼,java面试题整合(良心制作)11万多字拿去。持续更新【可以收藏】
- K8S Runtime CRI OCI contained dockershim 理解
- CNN做时间序列预测_深度学习与时间序列预测
热门文章
- linux文件句柄满了 现象_Linux 离奇磁盘爆满,如何解决? | 原力计划
- (03)FPGA与CPLD区别
- (05)System Verilog 数组类型详解
- ajax原生为什么else会执行2次,关于Ajax,明明传过去的值是1,可不知道为什么就是else起作用?...
- 华为鸿蒙系统是物联网,华为鸿蒙系统官宣!谷歌工程师直接懵了,硅谷感慨:中国人太厉害...
- php 序列化 java_JAVA之序列化
- 19. GD32F103C8T6入门教程-adc使用教程6-外部中断线11触发adc0
- Linux设备树相关
- STM32 中断详解
- java锁包读写锁_Java并发包7--读写锁ReentrantReadWriteLock的实现原理解析