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__会如何做?相关推荐

  1. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

  2. Python 中的 if __name__ == __main__ 该如何理解

    Python 中的 if __name__ == "__main__" 该如何理解 原文链接: http://blog.konghy.cn/2017/04/24/python-en ...

  3. 2020-12-11 Python中的 if __name__ == “__main__“

    Python中的 if __name__ == "__main__" 对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__ ...

  4. Python中的if __name__ == ‘__main__‘

    if name == 'main'的意思是:当.py文件被直接运行时,if name == 'main'之下的代码块将被运行:当.py文件以模块形式被导入时,if name == 'main'之下的代 ...

  5. 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  6. 解惑(二)----- 如何通俗地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  7. 简单理解Python中的if __name__ == '__main__'

    1. 摘要 通俗的理解__name__ == 'main':假如你叫小明.py,在朋友眼中,你是小明(name == '小明'):在你自己眼中,你是你自己(name == 'main'). if na ...

  8. python中使用if __name__ == '__main__':

    引子 在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间.当你把这个模块导入到test2.py模块中,接下来如果在test2. ...

  9. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用

    文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...

最新文章

  1. 基于SSH实现在线课程学习系统
  2. SpringBoot项目依赖本地jar包
  3. 分布式系统的那些事儿(六) - SOA架构体系
  4. python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
  5. c#使用Transactions类完成多个数据库的事务操作(分布式事务处理)
  6. 分布式session之redis解决方案实现
  7. NVR+DVR+CVR
  8. python 已知平行四边形三个点,求第四个点
  9. 重装系统后计算机无法启动,重装系统后电脑重启没反应是怎么回事?如何解决呢?...
  10. [C#] 控制系统音量-第二章
  11. 怎么让电脑上的图片全屏显示呢
  12. 《天道》之丁元英的30句经典语录
  13. 前端安全(http)
  14. 保障4-0521任务打卡
  15. Linux不是Windows(转)
  16. 大学计算机基础 一 实验报告,《大学计算机基础》实验报告实验一.docx
  17. Mobl试用之helloword
  18. 天池大赛-心跳信号分类预测:建模与调参
  19. arduino感应LED灯
  20. 西门子S7-200 SMART/828d PLC数据采集、远程调试

热门文章

  1. laravel wherehas 替换表前缀_AB(罗克韦尔)PLC如何快速创建Logix5000变量表
  2. ElasticSearch之term vector
  3. wifi信号衰减与距离关系_有线网络PK无线WiFi,孰胜孰负?
  4. (96)分频器设计(任意分频器)
  5. (1)触发器systemverilog与VHDL编码
  6. nc65 单据非向导开发 源代码_最受Java开发者喜爱的5款开发工具
  7. python冒泡排序代码和注释_python代码求助(两个实验任务,尽量写出注释~)
  8. 10.FreeRTOS学习笔记-中断管理
  9. 9.FreeRTOS学习笔记-任务通知
  10. STM32F103_步进电机