python基础——认识(if __name__ == ‘__main__’:)
我们在写代码时,经常会用到这一句:if __name__ == '__main__',那么加这一句有什么用呢?实际上,它起到到了一个代码保护功能,它能够让别人在导入你写的模块情况下,无法看到和运行if __name__ == '__main__'下的内容。那么这是什么原理呢?下面一起来看看。
很明显这是一句if的判断语句,而__name__对于每个py文件都是存在的且唯一,他是一个属性,对于文件本身而言,这个属性的值也是唯一的,值为__main__。如下所示:
if __name__ == '__main__':
print (__name__)
__main__
但这个文件如果被其他文件所调用时,__name__的值会变成文件名,故这时__name__ == '__main__'条件不成立,自然就无法执行其下面的内容。一个文件名为test.py,其内容如下:
print ("hello, my school")
print (__name__)
if __name__ == '__main__':
print ("hello,world")
另一个py文件调用这个文件,内容如下:
import test
print ("本文件的__name__的值为:",__name__)
hello, my school
test
本文件的__name__的值为: __main__
上面可以发现test.py的属性值变成了test,新文件的属性值为__main__。test中不属于if __name__ == '__main__'的部分都被执行了。
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__"会如何做 # Threading example import time, thread def myfunct ...
- Python中的if __name__ == '__main__'
如何简单地理解Python中的if __name__ == '__main__' 1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__ ...
- 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 的代码风格. 殊不知这段代码的 ...
- 如何简单地理解Python中的if __name__ == '__main__'(https://blog.csdn.net/yjk13703623757/article/details/77918633)
1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...
随机推荐
- 适合初学者的10个linux命令
转http://devopscube.com/list-of-linux-commands-every-developer-should-know/ At some point in you deve ...
- web应用中并发控制的实现,各种锁的集合
参考:http://blog.csdn.net/xiangwanpeng/article/details/55106732 B/S构架的应用越来越普及,但由于它有别于C/S构架的特殊性,并发控制始终没 ...
- mybatis+mysql 通过sql脚本生成mapper的部分内容
SQL mysql SELECT concat('<if test="', COLUMN_NAME, ' != null"> ', COLUMN_NAME, ',< ...
- h5-任意元素居中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- no.9亿级用户下的新浪微博平台架构读后感
微博平台的第三代技术体系,使用正交分解法建立模型:在水平方向,采用典型的三级分层模型,即接口层.服务层与资源层:在垂直方向,进一步细分为业务架构.技术架构.监控平台与服务治理平台. 水平分层 (1)接 ...
- MyBatis 关联查询的实现:多对多
2个实体:订单.商品,一个订单可以包含多种商品,同时一种商品可以属于多个订单,即多对多. 商品表goods_tb: 订单表order_tb: no是订单编号,user_id与用户表的id关联. 需要新 ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习: 表单
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script> ...
- puts函数出现warning: passing argument 1 of ‘puts’ from incompatible pointer type(警告:从不兼容的指针类型传递“puts”的参数1)
代码: /************************************************************************* > File Name: ptr_v ...
- Codeforces 1295C - Obtain The String
题目大意: 给定两个字符串s和t,你有一个空字符串z 每次可以取s的任意一个子序列加到z后面 问至少要取多少次才能让z等价于t 解题思路: vector存s中26个字母的位置 然后t字符串从前往后一个 ...
- MySQL--基础SQL--DCL
DCL语句主要是DBA用来管理系统中的对象权限时使用,一般的开发人员很少使用. 1.创建一个数据库用户在z1,具有对sakila数据库中所有表的SELECT/INSERT权限: GRANT SELEC ...