if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;

b5b635c610d0c328434ac7a9129617a1.png

我们在python模块那章节的学习,有所接触到if __name__ == '__main__'这个概念。当时我们只是大概描述了一番,不少伙伴还是有所困惑,今天就让我们通过实际例子去讲解这条语句到底有何含义。一个python文件有两种用途,一种被当主程序、脚本执行,另一种被当模块导入,为了区别同一个文件的不同用途,每个py文件都内置了__name__变量,该变量在py文件被当做脚本执行时赋值为“__main__”,在py文件被当做模块导入时赋值为模块名。

如模块my_module.py中,可以在文件末尾基于__name__在不同应用场景下值的不同来控制文件执行不同的逻辑,如下所示:

#encoding:UTF-8#本文件为:my_module.py...if __name__ == '__main__':    my_module.py被当做脚本执行else:    my_module.py被当做模块导入时执行

首先建立一个python文件,如test1.py,文件代码如下所示:

#encoding:UTF-8#本文件名为:test1.pydef print_hello():    print("欢迎关注公众号:浩道linux")print("本公众号给大家分享最有趣最实用的linux、python知识!")#打印__name__的值print(__name__)if __name__ == '__main__':    print("test1.py当做脚本执行执行!!!")else:    print("test1.py被当做模块导入时执行。。。")

运行以上代码,结果如下所示:

3b79d2dbdb35e0fa8ceeea9535eb65a9.png

从结果看出,当执行test1.py本身文件时,变量__name__的值为__main__。

其次,再创建一个python文件,如test2.py,文件代码如下:

#encoding:UTF-8#本文件名为:test2.py#导入模块test1import test1test1.print_hello()print("代码执行结束********")

执行test2.py文件,结果如下所示:

f233cf4b5b5cb1cd11b222b4c65b1252.png

通过模块那篇知识的学习,不难看出test2.py所执行原理以及结果。当test1.py被当成模块导入时,__name__的值由__main__变成了test1。

相信通过这两个例子的比较,已经弄懂if __name__ == '__main__'的用法了吧。用到该语句的场景一般就是我们写完一个函数代码,自己想调用执行测试,而又不希望自己写的代码被当成模块导入时,执行我们的测试代码。大家如果还有疑问,可以留言讨论,希望能给大家带来解惑。

往期内容回顾:

干货之六:python常见面试题,你会多少?

平时你输入的验证码,竟是这么简单就实现了

python常见模块之time模块

python实战项目之---童年小游戏(附源码)

e70b82119f0787aa4cd3f2130027aaaa.png

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

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

相关文章

java 生成apk包_Eclipse导出安卓apk文件的图文教程

安装到Android手机上的apk需要签名,本文描述了如何创建自己的签名及从Eclipse中导出apk。方法/步骤1、在Eclipse中选择一个Android工程,然后点击鼠标右键菜单中的“Export”:2、选择“Android”->;“Export Android Application”&#xf…

营业执照在线生成_平罗县实现个体户营业执照“秒批”

近日平罗县市场监管局注册登记窗口推出个体工商户“秒批”系统。今后,75%个体户常见经营项目可实现5分钟内乃至数秒无人工干预智能审批。01 一是实现智能化审批。平罗县市场监管局登记注册窗口依托自治区系统升级改造,推行企业设立登记标准化和智能化。…

wireshark-win64-3.4.0安装_轴承安装规范

Sulli小苏:今天详细介绍下如何正确的安装轴承,正确的安装操作是轴承长寿命的关键,轮毂轴承的主要作用是承重和为轮毂的转动提供精确引导,它既承受轴向载荷又承受径向载荷,是一个非常重要的零部件。轴承的安装正确方式滚…

代码实现tan graph model for classification_几行代码搞定ML模型,低代码机器学习Python库正式开源...

PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率。想提高机器学习实验的效率,把更多精力放在解决业务问题而不是写代码上?低代码平台或许是个不错的选择。最近,机器之心发现了…

dataframe 如何选中某列的一行_带你领略pandas中多表之间如何处理

但我们在处理Pandas多表数据时,我们需要将多个表之间进行表格的连接与合并,当连接完多表之后我们可能还需要对数据进行多重的索引,方便我们更快的找到数据,以及对数据进行做透视表,更加直观的去观察我们的数据,今天我们就围绕着数据合并以及数据重塑及透视表进行展开讲解,让我们…

python计算定积分_python编程通过蒙特卡洛法计算定积分详解

这篇文章主要介绍了python编程通过蒙特卡洛法计算定积分详解,具有一定借鉴价值,需要的朋友可以参考下。 想当初,考研的时候要是知道有这么个好东西,计算定积分。。。开玩笑,那时候计算定积分根本没有这么简单的。但这确…

java spring mvc api_SpringMVC实现REST API

JSON使用Jackson jar包、RequestBody、ResponseBody注解,达到:1. 请求JSON消息体映射为JAVA对象2. 返回JAVA对象映射为JSON消息体Step 1. 导入Jackson jar包:Step 2. 在Spring MVC配置中加入annotation-driven,该配置可以确保Requ…

gateway动态路由_无语!SpringCloud Gateway动态路由之Nacos,我已经讲得很清楚了

前言当我们的网关Gateway程序开发完成之后,需要部署到生产环境,这个时候你的程序不能是单点运行的,肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口&…

json里面的list数据取不出来_sql盲注的困局:利用DNSlog快速导出数据

对于一个sql注入点来说最幸运的就是支持堆叠注入&#xff0c;最蛋疼的就是盲注&#xff0c;盲注里面难搞的就是基于时间的盲注。我们在本地利用这段代码进行演示<?php error_reporting(0); $link mysqli_connect(localhost,root,root); mysqli_set_charset($link,utf8); m…

python怎么测试程序_python如何测试程序

测试函数是用于自动化测试&#xff0c;使用python模块中的unittest中的工具来测试 附上书中摘抄来的代码&#xff1a;#codingutf-8 import unittest from name_function import get_formatted_name class NamesTestCase(unittest.TestCase): def test_first_last_name(self): f…

判定覆盖白盒测试java_白盒测试系列(四)条件判定覆盖

条件判定覆盖一、定义&#xff1a;程序中每个判定至少有一次为真值&#xff0c;有一次为假值,使得程序中每个分支至少执行一次&#xff0c;且使得各判定中的每个条件获得各种可能的取值至少满足一次。二、特点&#xff1a;1、综合了条件覆盖和判定覆盖的特点2、满足条件判定覆盖…

discard python_Netty入门教程(一) 实现DISCARD服务

官方那个给出的介绍是&#xff1a;Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。然后我们简单理解一下&#xff0c;这玩意就是个程序&#xff0c;干什么的&am…

python向量化编程技巧_神经网络基础之Python与向量化

Vectorization 深度学习算法中&#xff0c;数据量很大&#xff0c;在程序中尽量减少使用loop循环语句&#xff0c;而可以使用向量运算来提高程序运行速度。 向量化(Vectorization)就是利用矩阵运算的思想&#xff0c;大大提高运算速度。例如下面所示在Python中使用向量化要比使…

SQL server 数据库面试题及答案(实操2)

使用你的名字创建一个数据库 创建表&#xff1a; 数据库中有三张表&#xff0c;分别为student,course,SC&#xff08;即学生表&#xff0c;课程表&#xff0c;选课表&#xff09; 问题&#xff1a; --1.分别查询学生表和学生修课表中的全部数据。--2.查询成绩在70到80分之间…

python电子相册制作软件_电子相册怎么做

电子相册制作 本文来自#千兆网络有什么用#征稿活动&#xff0c;不断提速的网络给你的生活带来了什么变化&#xff1f;快来参与活动&#xff0c;聊聊你玩转互联网&#xff0c;高速网上冲浪的经历&#xff01;>点击这里查看活动详情< 现在手机的拍照功能日趋强大&#xff0…

java list 范围删除_JAVA中循环删除list中元素(移除list两时间范围外的元素)

印象中循环删除list中的元素使用for循环的方式是有问题的&#xff0c;但是可以使用增强的for循环&#xff0c;然后今天在使用时发现报错了&#xff0c;然后去科普了一下&#xff0c;再然后发现这是一个误区。下面就来讲一讲。。伸手党可直接跳至文末。看总结。。JAVA中循环遍历…

python reduce函数_Python reduce()函数的用法小结

reduce()函数也是Python内置的一个高阶函数。 reduce() 格式&#xff1a; reduce (func, seq[, init()]) reduce()函数即为化简函数&#xff0c;它的执行过程为&#xff1a;每一次迭代&#xff0c;都将上一次的迭代结果&#xff08;注&#xff1a;第一次为init元素&#xff0c;…

Php获取id并提交表单,提交表单后 PHP获取提交内容的实现方法

提交表单后 PHP获取提交内容的实现方法2020-06-14 15:35:24问题&#xff1a;网页上提交表单之后&#xff0c;PHP为什么不能获取提交的内容&#xff1f;然而在老版本的PHP上运行却正常。新版的PHP已经废弃了原来的表单内容处理方式&#xff0c;即不再把提交的表单的内容直接复制…

idea查看一个类的所有子类_java new一个对象的过程中发生了什么

java在new一个对象的时候&#xff0c;会先查看对象所属的类有没有被加载到内存&#xff0c;如果没有的话&#xff0c;就会先通过类的全限定名来加载。加载并初始化类完成后&#xff0c;再进行对象的创建工作。我们先假设是第一次使用该类&#xff0c;这样的话new一个对象就可以…

stringbuilder删除最后一个字符_Java类-StingBuffer,StringBuilder

Java提供了String,StringBuffr,StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法.他们的相同点都是封装字符串;都实现了CharSeqence接口.public final class StringBuffer extends AbstractStringBuilder implements java.io.Serializable,CharSequncepublic f…