if __name__ == __main___python中 __name__ == #x27;__main__#x27; 有什么作用?

python中if __name__ == ‘__main__’ 的作用,到底干嘛的?

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

就是让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

这句话,可能一开始听的还不是很懂。下面举例说明:

先写一个模块:

#module.py
def main():print "we are in %s"%__name__
if __name__ == '__main__':main()

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次**main()**函数会是怎样的结果呢?

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = ‘__main__’ 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

总结一下:

如果我们是直接执行某个.py文件的时候,该文件中那么__name__ == '__main__'是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__

这个功能还有一个用处:调试代码的时候,在if__name__ =='__main__'中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

当你打开一个.py文件时,经常会在代码的最下面看到if__name__ == '__main__':,现在就来介 绍一下它的作用.

模块是对象,并且所有的模块都有一个内置属性__name__。一个模块的__name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__的值将是一个特别缺省__main__

在cmd 中直接运行.py文件,则__name__的值是__main__;

而在import 一个.py文件后,__name__的值就不是__main__了;

从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件

如:

#Test.pyclass Test:def __init(self):passdef f(self):print 'Hello, World!'if __name__ == '__main__':Test().f()#End

你在cmd中输入:

C:>python Test.pyHello, World!

说明:"_name_ == ‘_main_’"是成立的

你再在cmd中输入:

C:>python>>>import Test>>>Test.__name__                #Test模块的__name__'Test'>>>__name__                       #当前程序的__name__'__main__'

无论怎样,Test.py中的__name__ == '__main__'都不会成立的!

所以,下一行代码永远不会运行到!

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

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

相关文章

密码学专题 非对称加密算法指令概述 DSA算法指令

DSA算法和DSA指令概述 DSA算法是美国国家标准的数字签名算法,只具备数字签名的功能不具备密钥交换的功能生成DSA参数然后生成DSA密钥,DSA参数决定了DSA密钥的长度三个指令首先是dsaparam指令,该指令主要用来生成DSA密钥参数,并提…

每天定时打开某个网页_Python科普帖定时通知

0 复习上一关我们学习了selenium,它有可视模式与静默模式这两种浏览器的设置方法,二者各有优势。然后学习了使用.get(URL)获取数据,以及解析与提取数据的方法。在这个过程中,我们操作对象的转换过程:除了上面的方法&am…

java 构造器

概念 案例1 package lesson.l11_oop2;/*** Illustration** author DengQing* version 1.0* datetime 2022/7/3 15:28* function*/ public class Person {private int age;private String name;public Person() {this.age 18;}public Person(int age, String name) {this.age …

密码学专题 信息摘要和数字签名指令

信息摘要 区别于对称加密和非对称加密,信息摘要算数是一种不可逆的操作,无论输入数据的大小输出的数据长度是固定的信息摘要算数对输入很敏感,即使数据变化很细微,输出的结果会出现很大的差异从不同输入得到相同的输出的概率非常…

dataframe 筛选_Spark.DataFrame与Spark.ML简介

本文是PySpark销量预测系列第一篇,后面会陆续通过实战案例详细介绍PySpark销量预测流程,包含特征工程、特征筛选、超参搜索、预测算法。在零售销量预测领域,销售小票数据动辄上千万条,这个量级在单机版上进行数据分析/挖掘是非常困…

密码学专题 证书和CA指令 证书和CA功能概述

为什么需要证书 实现了公钥和私钥的相互验证,但是任何人都可以生成很多的密钥对,密钥对并没有关联实体身份,因此诞生可数字证书前提是CA是所有用户都信任的用户需要将自己的信息和公钥交给CA进行认证生成一个属于自己并被其与用户认可的数字…

python怎么接外活_java和Python两门语言,哪个适合接活单干?

谢邀。 根据知乎规矩:不说需求就挑语言的行为就是耍流氓。 如果接的活倾向于OA系统、管理系统之类的,建议是java,毕竟框架模板都很成熟,也比较好找,快速开发什么的在晚上搜一下,改改样式就可以了。这些项目…

密码学专题 证书和CA指令 申请证书|建立CA|CA操作|使用证书|验证证书

Req指令介绍 功能概述和指令格式 req指令一般来说应该是提供给证书申请用户的工具,用来生成证书请求以便交给CA验证和签发证书。但是,OpenSSL的req指令的功能远比这样的要求强大得多,它不仅可以生成RSA密钥、DSA密钥,以及将它们…

python语言编写一个生成九宫格图片的代码_python实现图片九宫格分割

大家都知道在微信朋友圈或者微博以及QQ动态中,有很多“强迫症患者”发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗? 本文就是用Python做的一个九宫格图片生成器,是…

密码学专题 OpenSSL标准转换指令

概述 繁多复杂的各种文件编码格式、证书格式和密钥格式等。事实上,并非OpenSSL开发者想要将数字世界弄得如此令人头疼,只是由于各种原因,数字世界存在各种不同的标准,为了尽量兼容这些不同的标准,OpenSSL开发者才相应…

java pakage、import关键字

package介绍 常用的包 import 案例

python数组初始化_Python Numpy 数组的初始化和基本操作

Python 是一种高级的,动态的,多泛型的编程语言。Python代码很多时候看起来就像是伪代码一样,因此你可以使用很少的几行可读性很高的代码来实现一个非常强大的想法。 一.基础: Numpy的主要数据类型是ndarray,即多维数组…

密码学专题 OpenSSL中SSL相关指令

再谈SSL和OpenSSL 由于SSL协议已经是密码学和PKI技术中非常具体的一个应用协议,为了实现它,OpenSSL在密码学基础应用和PKI技术的基础实现上做了大量的工作,才逐渐形成和奠定了OpenSSL在密码学应用和PKI技术开发中的重要基础软件包地位。Open…

python企业发放的奖金_你公司的年终奖发了吗?

没发, 被裁了. 跨境电商行业, 2017.7 入职,2018.11.19 下午接到裁员通知.. 人事找我聊了下,叫我一个星期之内走,补偿1个月工资.... 我想想有点不对劲.. 于是我百度了下,5分钟之后,提出了我的方案: 1、按照劳动法应该补偿1.5个月,并且提前1月通知 2、补偿2.5个月. 我立马走. 最后…

使用MetaMask实现转账交易时附带Input Data数据

进入如下页面,点击View Assert in Explorer进入Etherscan网站,就可以看到本账户先前所有的交易信息。 字段分析 Txn Hash 是交易的HashMethod:交易的类型,一般是两种,如果是Transfer指定的是合约部署;如…

Ubuntu安装Google浏览器

下载谷歌浏览器 直接使用Ubuntu自带的火狐浏览器进行下载 默认下载到/tmp临时文件夹里面,考虑到权限问题,需要将其移动到 Downloads文件夹下面使用命令 sudo mv ./goo(Tab)~/Down(Tab)使用命令行的方式进行下载 wget https://dl.g…

普通类创建获取session 方式_猿蜕变11——一文搞懂mybatis花式使用方式

看过之前的蜕变系列文章,相信你对mybatis有了初步的认识。但是这些还不够,我们今天进一步来了解下mybatis的一些用法。猿蜕变同样是一个原创系列文章,帮助你从一个普通的小白,开始掌握一些行业内通用的框架技术知识以及锻炼你对系…

Ubuntu配置IPFS的环境

参考链接 Ubuntu上IPFS环境搭建 - 简书 下载安装包 下载地址:https://dist.ipfs.io/#go-ipfs页面会自动根据你的操作系统提供适合的下载安装包,所以需要在Ubuntu环境下点开上面那个链接,网页自动识别当前的平台并提供对应的版本&#xff0c…