python中使用“if __name__ == '__main__'”语句的作用

首先用最简洁的语言来说明一下  if __name__ == '__main__': 的作用:防止在被其他文件导入时显示多余的程序主体部分

先举个例子,如果不用if __name__ == '__main__': 会发生什么事:

首先在yy.py中调用cs.py

  1. #yy.py
  2. import cs
  3. print('引用cs')
  4. cs.cs()
  5. print('程序结束!')

cs.py文件如下

  1. #cs.py
  2. def cs():
  3. print('一打开cs!')
  4. print('cs主函数!')

运行结果会是:

  1. cs主函数!
  2. 引用cs
  3. 一打开cs!
  4. 程序结束!

分析:也就是说,如果你的目的只是调用cs.py中的cs()函数,那么你在导入的时候就不要使用import cs

因为一旦你使用了import cs 

那么在运行至这一句导入代码时会自动运行一次cs.py,cs.py中的函数被封装不会被直接运行,但是cs.py中有没被封装的语句:

 

print('cs主函数!')

因此,这一句就会被多余地运行,哪怕你完全不需要这一句,你的目的只是调用cs.py中的cs()函数

就算是使用 

from cs import cs

运行结果还是一样。

那么怎么才能避免运行不需要的代码段呢?那就把不需要的代码段也当成函数运行,但是这个函数有点特殊,他要区分是自身运行还是被调用导入而运行,如果是自身运行那么就把那些代码段显示出来,如果被调用就屏蔽掉。

于是  if __name__ == '__main__': 便应运而生

我们修改一下代码

只修改一下cs.py的代码:

  1. def cs():
  2. print('已打开cs!')
  3. if __name__ == '__main__':
  4. print('cs主函数!')

之后运行yy.py

结果如下:

  1. 引用cs
  2. 已打开cs!
  3. 程序结束!

 

到这一步,大家应该知道  if __name__ == '__main__': 是干什么用的了吧!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bishi

鄙视 2011-04-26 20:43:02| 分类:默认分类 |字号订阅腾讯笔试题:const的含义及实现机制 const的含义及实现机制,比如:const int i,是怎么做到i只可读的? const用来说明所定义的变量是只读的。 这些在编译期间完成&…

NLP复习资料(1)-绪论、数学基础

NLP复习资料-绪论、数学基础1.绪论2.数学基础2.1信息论基础:2.2应用实例:词汇消歧国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.绪论 1. 语言学、计算语言学、自然语言理解、自然语言…

redis——sentinel

什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理/多个 Redis 服务器,该系统执行以下三个任务: 监控: 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒:当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他…

珍藏

http://www.cnblogs.com/leoo2sk/archive/2011/04/19/nginx-module-develop-guide.html http://ldl.wisplus.net/page/6/

FM,FFM及其实现

在推荐系统和计算广告业务中,点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告及电商收入有重要的指导作用。业界…

linux-在cenos上安装大全(nginx/JRE/maven/Tomcat/MYSQL/redis/kafka/es...)

云服务器 阿里云 腾讯云 七牛云 百度云 天翼云 华为云 西部数码 自己购买一个,学生和企业用户都有优惠的。 putty 自己下载一个putty,用来操作云服务器。 putty.org 一路下一步就ok。 点击putty.exe,输入你的ip或域名 最好改成20&#xff1…

NLP复习资料(2)-三~五章:形式语言、语料库、语言模型

NLP复习资料-三~五章1.第三章:形式语言2.第四章:语料库3.第五章:语言模型国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.第三章:形式语言 1.语言描述的三种途径&#xff1a…

存储管理的页面置换算法

存储管理的页面置换算法 存储管理的页面置换算法在考试中常常会考到,操作系统教材中主要介绍了3种常用的页面置换算法,分别是:先进先出法(FIFO)、最佳置换法(OPT)和最近最少使用置换法&#xff…

KKT条件初步理解

最近学习的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏…

NLP复习资料(3)-六~七章:马尔科夫模型与条件随机场、词法分析与词性标注

NLP复习资料1.第六章 马尔科夫模型与条件随机场2.第七章 词法分析与词性标注国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。1.第六章 马尔科夫模型与条件随机场 1.马尔科夫模型:P6系统每一时刻的状态只与前一个…

redis——实战点赞

点赞功能随处可见,我们都知道点赞是一个非常高频的操作,redis就非常适合做这种工作。 实现效果: 分析:三种类型:给帖子点赞,给评论点赞,给回复点赞 我们只实现查看点赞数量的话,只…

network

1.网络结构 在OSI参考模型中,物理层的作用是透明的传输比特流。对等实体在一次交互作用中传送的信息单位称为协议数据单元,它包括控制信息和用户数据两部分。上下层实体之间的接口称为服务访问点(SAP),网络层的服务访问点也称为网络地址&…

NLP复习资料(4)-第八章 句法分析

NLP复习资料-第八章国科大,宗老师《自然语言处理》课程复习笔记,个人整理,仅供参考。第八章:语法理论(第三章的后续) 1.出发点chomsky的四类文法过于泛化,生成能力太强了,会生成没有…

大数据学习(10)--流计算

文章目录目录1.流计算的概述1.1 什么是流数据?1.2 批量计算和实时计算1.3 流计算的概念1.4 流计算和Hadoop1.5 流计算框架2.流计算的处理流程2.1 流计算处理基本概念2.2 数数据的实时获取2.3 数据的实时计算2.4 实时查询任务3.流计算的应用和开源框架Strom3.1 流计算…

network---written test

1、OSI(Open System Interconnect):开放系统互联,是一个七层的计算机网络模型,分别为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 TCP/IP(Transmission Control Protocol/…

redis——实战关注

效果: 思路:很好想,把自己的粉丝和自己关注的人都存起来(set即可),做增删改查。 package com.now.community.community.service;import com.now.community.community.entity.User; import com.now.commun…

NLP复习资料(5)-第九章 句法分析

NLP复习资料-第九章1.短语结构分析2.短语结构分析方法的评估指标3依存句法分析器设计P134依存句法分析器性能评价5短语结构与依存结构能够相互转换6汉英句法结构对比7汉语长句的层次化句法分析国科大,宗老师《自然语言处理》课程复习笔记,个人整理&#…

神经网络中的优化算法总结

在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法? 这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳的…

OS --written test1

241.在提供虚拟存储的系统中,用户的逻辑地址空间主要受( )的限制。A.内存空闲块的大小 B.外存的大小 C.计算机编址范围 D.页表大小答案:C242.在分时系统中,时间片一定,( …

Java开发需要知道的HTML知识

概述 HTML(HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。 HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈…