python解释器遇到if __name__=="__main__"会如何做?
python解释器遇到if __name__=="__main__"会如何做
# Threading example import time, thread def 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__' what hell is it?
python中的if __name__ == '__main__' what hell is it? python认为一切模块都可能被执行或者被import 如果一个模块是被import导入的,那么该 ...
- Python中的if __name__ == '__main__'
如何简单地理解Python中的if __name__ == '__main__' 1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__ ...
- python中的 if __name__ == “__main__”: 有什么用
https://stackoverflow.com/questions/419163/what-does-if-name-main-do# 问题: What does if name == " ...
- Python中的if __name__='__main__'语句的作用
笔者在自学Python的过程中,对于if __name__='__main__'的用法感到很困惑,在think Python一书中原作者的源代码是这么解释if __name__='__main__'语 ...
- 小白的Python之路 if __name__ == '__main__' 解析
if __name__ == '__main__' 参考文献: http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792463.html http ...
- python中的if __name__=='__main__': main()解析
python中我们会看到一段代码是这样的: if __name__=='__main__': main() 这段代码的什么意思,我们可以知道代码的意思是如果__name__=='__main__'为T ...
- 如何简单地理解Python中的if __name__ == '__main__'
https://blog.csdn.net/yjk13703623757/article/details/77918633 1. 摘要 通俗的理解__name__ == '__main__':假如你叫 ...
- python中使用if __name__ == '__main__':
引子 在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间.当你把这个模块导入到test2.py模块中,接下来如果在test2. ...
- 写了2年python,知道 if __name__ == '__main__' 什么意思吗?
相信刚接触Python的你一定有过如此经历,把所有的代码都写在 if __name__ == '__main__'下,因为有人告诉你,这样比较符合 Pythonista 的代码风格. 殊不知这段代码的 ...
随机推荐
- [转]PHP中file_put_contents追加和换行
在PHP的一些应用中需要写日志或者记录一些信息,这样的话. 可以使用fopen(),fwrite()以及 fclose()这些进行操作. 也可以简单的使用file_get_contents()和fil ...
- PHP中get请求中参数的key不能是para
¶会被转化成¶,然后就无法进行下去了. 仅作记录.
- python-包及日志模块使用
一.包 1.包就是一个保护有__init__.py文件的文件夹,包的本质就是一种模块,即包是用来导入使用的,包内部包含的文件也都是用来被导入使用的.包是为了更好组织好模块,就是一个文件夹. 注:在py ...
- 【进阶2-3期】JavaScript深入之闭包面试题解
这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://github.com/yygmind/blog/issues/19 作用域指的是一个变量和函数的作用范围,JS中函数内声明的所有变 ...
- LeetCode(106):从中序与后序遍历序列构造二叉树
Medium! 题目描述: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 posto ...
- ubuntu 调整分辨率
修改 /etc/X11/xorg.conf配置文件即可
- python(2): If/for/函数/try异常/调试/格式输出%
(一) if if a1==a2: print('ok') if: else: if: elif: ... else: 注意缩进 猜数字游戏 from random import randint ...
- uva11754 中国剩余定理+暴力搜索
是当y的组合数较小时,暴力枚举所有组合,然后用中国剩余定理求每种组合的解,对解进行排序即可 注意初始解可能是负数,所以如果凑不够S个,就对所有解加上M,2M.... 当y的组合数较大时,选择一个k/x ...
- cf1042d 树状数组逆序对+离散化
/* 给定一个数组,要求和小于t的段落总数 求前缀和 dp[i]表示以第i个数为结尾的小于t的段落总数,sum[i]-sum[l]<t; sum[i]-t<sum[l],所以只要找到满足条 ...
- vue 中样式的绑定
1.class的对象绑定 //对应的css <style> .active { color: red; } </style> <!--html 对应的代码--> & ...