Python基础内容:怎样快速理解if __name__ == 'main'语句
name 是当前模块名,当模块被直接运行时模块名为 main 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
相信好多初学者在学习python的过程中,经常会遇到if name == ‘main’语句,可能你知道它的作用,也可能很模糊,今天就给大家分享下我的理解。
我们先新建一个text的py文件,并写入以下内容并运行
然后呢,在同一个文件夹中在新建一个py文件text1,写入一行代码:import text 然后运行看看结果
与之前test.py代码运行结果比较,只有输出学习Python,也就是if name==”main“: 之前的语句被执行,之后的没有被执行。
为什么会这样呢?别急,我们稍微处理下代码就可以看明白了:
在 if name==”main“之前加入一行代码:print(name),即打印出name,然后我们在重新分别执行2个代码看看
这就很清楚了,在text中name变量的值为main,而在text1中,name的值为text,明显不满足if语句,因此,后面的代码无法执行!
仔细想想,它的原理也就是:
每个python模块(文件)都包含内置的变量name,当该模块被执行的时候,name就等于文件名。而import到其他模块(文件)中,则name等于当前的模块名,而main等于当前文件名,所以直接执行模块的时候if name==”main“为真,可以执行;import到其他模块(文件)中,if name==”main“为假,那当然就不执行对应的代码了。
简单说就是:name是当前的模块名字,在当前文件时可以被执行,而模块被导入时,代码不被运行!
喜欢就关注下呗( ̄ε  ̄)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
webapi 控制json的字段(key)显示顺序
原文: webapi 控制json的字段(key)显示顺序 使用两个c#的特性: 加在类上的:[DataContract] 加在字段上的:[DataMember(Name = "ResultCode",EmitDefaultValue = true,IsRequired = true, Order = 1)] [DataContract] public class ResponseMessage { /// <summary> /// 信息类型 /// </summary> [DataMember(Name = "ResultCode",EmitDefaultValue = true,IsRequired = true, Order = 1)] public int ResultCode { get; set; } } 这个order就是控制顺序的。C#就是辣么强大。
- 下一篇
java线程理解以及openjdk中的实现
看了《深入理解java虚拟机》java与线程一章提到了linux提供的线程模型是一对一的。我也写过一段linux c,当时开辟多线程也就是调用了pthread_create的库函数。 linux c 线程函数 int pthread_create(pthread_t *tid,const pthread_attr_t *attr, (void*)(*start_rtn)(void*),void *arg); tid就是线程标识 attr是线程属性 start_rtn是函数指针,就是线程运行的函数 arg是函数的参数 这个函数的运用比较简单,就是把你线程要执行的函数的指针传递给第三个参数,把函数的参数用第四个参数传入。 我的问题也就来了,java的线程执行的内容是写在run方法的,那么c的线程是如何调用java的方法的。最开始我以为是jni做的,就看了看openjdk的源码来验证。 openjdk的实现 java线程是通过start的方法启动执行的,主要内容在native方法start0中。 openjdk的写jni一般是一一对应的,Thread.java对应的就是Thread.c。 s...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果