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 一是实现智能化审批。平罗县市场监管局登记注册窗口依托自治区系统升级改造,推行企业设立登记标准化和智能化。…

java中测试计算能力_这 10 道 Java 测试题,据说阿里 P7 的正确率只有 50%

据说这是一套阿里Java工程师答题正确率只有50%的题目,由泰山版《Java开发手册》作者孤尽亲自出题,来测测凭借你的Java基础写下答案,看看你能对几题?题目一: float a 0.125f; double b 0.125d; System.out.println((a…

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

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

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

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

java坐标移动题目case_用java怎样编写一个二维坐标平移程序

展开全部java编写二维坐标平移程序,主要是e69da5e887aa62616964757a686964616f31333337626231通过类继承Point2D,使用里面的方法来平移,如下代码:class Point2D{int x, y;Point2D(){ }Point2D(int i,int j){xi;yj;}void offset(int a, int …

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

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

java的数列极差_[hoj]数列极差问题 | 学步园

贪心。关键是证明子问题最优即是总问题最优。可以考虑三个数的情况&#xff0c;易证选取最小的数擦除将得到最大数&#xff0c;vice versa 。故总体也是如此。用优先队列实现。STL自带仿函数greater<>用于调整小顶堆。#include #include using namespace std;int main(){…

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

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

java容易掉发吗_容易被忽略的面试题—Java高并发

常见实现如CAS等。部分乐观锁削弱了一致性&#xff0c;但中低并发程度下的效率大大提高。并发编程Java中如何创建一个线程&#xff1f;从面相接口的角度上讲&#xff0c;实际上只有一种方法实现Runable接口&#xff1b;但Thread类为线程操作提供了更多的支持&#xff0c;所以通…

java spring mvc api_SpringMVC实现REST API

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

java 定义构造器_java的构造器定义以及使用

构造器&#xff0c;是面向对象所特有的概念&#xff0c;是一种特殊的方法&#xff0c;与对象创建有关1、构造器没有返回值类型2、构造器方法名与类名相同&#xff0c;而且可以重载构造器3、构造器不能手动调用&#xff0c;只能在创建对象时自动调用一次4、如果没有在类中定义构…

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

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

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如何判断一个文件是否处于打开状态?

请问你的是linux吗&#xff1f;如果是linux可以借助/proc来获取。 import os class File(object): def __init__(self, file_path): if not os.path.exists(file_path): raise OSError({file_path} not exist.format(file_path file_path)) self.file_path os.path.abspath(f…

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 定时器每天就执行一次的实现代码

1.实现功能编写python脚本一直运行&#xff0c;判断当下是否是新的一天&#xff0c;如果是就执行一次任务代码2.具体实现代码#-*-coding:utf-8 -*-__author__ Administratorimport os,threading,timecurTimetime.strftime("%Y-%M-%D",time.localtime())#记录当前时间…

python 类的内置方法_【转】[python] 类常用的内置方法

原文&#xff1a;http://xukaizijian.blog.163.com/blog/static/170433119201111894228877/ 内置方法 说明 __init__(self,...) 初始化对象&#xff0c;在创建新对象时调用 __del__(self) 释放对象&#xff0c;在对象被删除之前调用 __new__(cls,*args,**kwd) 实例的生成操作 _…