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. .Net中简单实现发送邮件
  2. SQLServer 数据库变成单个用户后无法访问问题的解决方法
  3. 验证url 地址是否是图片
  4. 元宇宙:Facebook正式改名为Meta,要砸600亿做这件事
  5. 光伏双反闹剧何时休?
  6. pat天梯赛练习 L2-006
  7. 《Java 核心技术卷1 第10版》学习笔记------ 对象包装器、自动装箱、拆箱
  8. 阿里云2011.9.17招聘会笔试题
  9. android 5.0 sd卡读写,如何使用为Android 5.0(Lollipop)提供的新SD卡存取API?
  10. 支付宝开放新玩法:搜商家可领消费券
  11. iis web服务扩展_Web服务器系统都有哪些类型?都有什么优点呢?
  12. luogu 大陆争霸 WD yj
  13. 学习笔记-Bandit-WalkThrough
  14. 系统安装之十 U盘安装原版win10
  15. wps编号无法继续_wps的多级编号出问题了
  16. 清洁代码之道:一份实用关于如何编写和维护干净整洁的好代码的的方法 The Art Of Clean Code...
  17. 行为设计学-让创意更有黏性
  18. 震撼,java面试题整合(良心制作)11万多字拿去。持续更新【可以收藏】
  19. K8S Runtime CRI OCI contained dockershim 理解
  20. CNN做时间序列预测_深度学习与时间序列预测

热门文章

  1. linux文件句柄满了 现象_Linux 离奇磁盘爆满,如何解决? | 原力计划
  2. (03)FPGA与CPLD区别
  3. (05)System Verilog 数组类型详解
  4. ajax原生为什么else会执行2次,关于Ajax,明明传过去的值是1,可不知道为什么就是else起作用?...
  5. 华为鸿蒙系统是物联网,华为鸿蒙系统官宣!谷歌工程师直接懵了,硅谷感慨:中国人太厉害...
  6. php 序列化 java_JAVA之序列化
  7. 19. GD32F103C8T6入门教程-adc使用教程6-外部中断线11触发adc0
  8. Linux设备树相关
  9. STM32 中断详解
  10. java锁包读写锁_Java并发包7--读写锁ReentrantReadWriteLock的实现原理解析