【python】if __name__==‘__mian__‘ 如何理解,原理及作用

Python中的`if __name__ == “__main__“`: 使用详解 _name__ 阅读详情
1、什么是 name
1)为什么使用__name__属性

Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。

2) __name__属性

name__属性是Python的一个内置属性,记录了一个字符串。若是在当前文件,name 是__main。在hello文件中打印本文件的__name__属性值,显示的是__main__

若是导入的文件,name__是模块名(文件名,有.py后缀的)
test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名在这里插入图片描述
因此__name
== ‘main’ 就表示在当前文件中,可以在if name == ‘main’:条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。

2、模块导入

我们知道,当我们把模块A中的代码在模块B中进行import 导入A时,只要B模块代码运行到该import语句,模块A的代码会被执行。
模块A:# 模块A

#模块A
a='我是模块A!'
print('你好',a)
#模块B
from modle import A
b='哈哈,我是模块B~~'
print('你好',b)
#运行模块B时,输出结果
你好,我是模块A!
你好,哈哈,我是模块B~~

如果在模块A中,我们有部分的代码不想在被导入到B时直接被运行,但在直接运行A时可直接运行,那该怎么做呢?那就可以用到“if name=='main':这行代码了,我们对上面用到的A模块代码进行修改:

#模块A
a='我是模块A!'
if __name__=='__main__':
	print('你好',a)

B模块不做修改,直接执行B模块,输出结果如下:

#修改后运行模块B时,输出结果
你好,哈哈,我是模块B~~

综上:A模块中的a的值就没有再被输出了。所以,当你要导入某个模块,但又不想改模块的部分代码被直接执行,那就可以这一部分代码放在“if name==‘main’:”内部

3、“name”与“main”

看到现在也许心中还是疑惑,那么现在我们来说一说“if__name__==‘main’:”的原理。“name”是Python的内置变量,用于指代当前模块。我们修改上面用到的A模块和B模块,在模块中分别输出模块的名称:
模块A:

# 模块A
print('你好,我是模块A……')
print('模块A中__name__的值:{}'.format(__name__))
print('-------------------------')
# 模块B
from model import A
print('你好,我是模块B……')
print('模块B中__name__的值:{}'.format(__name__))

执行A模块时,输出结果:

你好,我是模块A……
模块A中__name__的值:__main__
-------------------------

执行B模块时,输出结果:

你好,我是模块A……
模块A中__name__的值:model.A
-------------------------
你好,我是模块B……
模块B中__name__的值:__main__

发现神奇之处了吗?当哪个模块被直接执行时,该模块“name”的值就是“main”,当被导入另一模块时,“name”的值就是模块的真实名称。所以,当运行“if name’main’:”语句时,如果当前模块时被直接执行,name__的值就是__main,条件判断的结果为True,“if name’main’:”下面的代码块就会被执行。

参考:https://www.zhihu.com/question/49136398/answer/114438004

AI时代C++编程入门:智能工具加速语法学习与项目实战 C++作为系统级编程语言,其核心在于对内存的直接管理和高效控制。理解变量、指针、引用等概念,本质上是掌握数据在内存中的存储与访问机制。这种底层控制能力赋予了C++高性能和灵活性,使其在操作系统、游戏引擎、高频交易等对效率要求极高的领域不可替代。然而,传统的学习路径往往因语法复杂、环境配置繁琐而令初学者却步。如今,AI智能编程工具的出现改变了这一局面。通过集成代码生成、智能补全和实时解释功能,这些工具能自动处理大量样板代码和基础错误,让学习者能聚焦于算法逻辑和核心概念的理解。例如,在掌握基本语法如控制流和函数 阅读详情

相关推荐

C++ 知识补充

向量(vector)是一个封装了动态大小数组的顺序容器(SequenceContainer)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。C++中map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。

weixin_47059239的博客 2129

Python中if __name__ == ‘__main__‘:的作用和原理

if __name__ == '__main__':的作用 一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此if __name__ == 'main':的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会...

二黑的博客 59万+

详解if __name__ == ‘__main__‘ (看这一篇就够了)

每个Python模块(一个以.py结尾的文件)都有一个__name__属性;当该模块被运行时,__name__的值会被Python解释器设置为'__main__'。当其他模块导入该模块时,该模块的__name__值就不会是'__main__',它将是它的模块名。

jundao1997的专栏 6562

if __name__ == ‘__main__‘详细解释及实操演示

当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。’ 是一个常见的用法,它的意思是:当该模块被直接执行时,该条件成立,执行其下的代码;这是因为在导入my_module模块时,Python会将该模块的名称赋值给__name__变量,因此if。’,而当模块被导入到其他模块中使用时,__name__的值就是模块的名称(不包含后缀.py)。因此,在上面的代码中,当我们直接运行my_module.py时,其中的if。

凡心所向,素履以往,生如逆旅,一苇以航 1万+

带你搞懂 if __name__ == “__main__“ ?

Python中if __name__ == '__main__':的作用和原理定义一个实现加法功能的py代码定义另一个py代码,导入add_.py中的add方法,类似模块导入打印结果(我们只想要一个5,但是输出两个,把第一个py代码中的add(),放在main中就不会执行) if name == ‘main’:的作用 一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if name == ‘main’: 的作用

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 1万+

如何用 OBProxy 实现 OceanBase 的最佳路由策略

本文基于业务中一类常见的路由问题展开,对OceanBase的路由功能及对应配置项做详细介绍,指导用户在业务实践中如何正确的配置路由策略及快速排查路由问题

OceanBase分布式数据库的博客 1679

python3编程中的if __name__ == '__main__': 的作用和原理

在python前期学习中或者在学flask中,if_name_ = ="main"经常出现在我们的眼帘中,我们经常会问,这个是个什么玩意儿,它是干什么的? 我们知道,if 语句是判断语句,当==条件为true时,才会 执行if语句。否者它不执行。 so ,这没什么用,它到底是干什么的,让我们分开来讲: __name__是一个变量。前后加了双下划线是因为是因为这是系统定义的名字。普通变量不要使用此方...

u010194453的博客 737

ubuntu18.04 显卡驱动问题 造成屏幕分辨变大 NVIDIA-SMI has failed because it couldn't communicate with ....等问题

问题1:装好了显卡驱动,cudnn,tensorflow等没问题,一直可以用。但是突然有一天不行了,终端输入:nvidia-smi 显示:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed...

梦萦飞--CV/DL/ML 2248

if __name__ == __main__:_if__name_ == '__mian__' 如何正确理解

一、if__name_ == '__mian__'功能一个python的文件有两种使用的方法:第一是直接作为脚本执行。第二是import到其他的python脚本中被调用(模块重用)执行。因此if name == 'main': 的作用就是控制这两种情况执行代码的过程,在if name == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是...

weixin_39616693的博客 113

VSCode里玩转AvaloniaUI:手把手教你搭建跨平台桌面应用开发环境(附.NET 7配置避坑)

本文详细介绍了如何在VSCode中搭建AvaloniaUI跨平台桌面应用开发环境,包括.NET 7配置避坑指南。从环境准备、项目创建到调试优化,手把手教你利用VSCode和Avalonia实现高效开发,特别解决了.NET 7依赖等常见问题,助力开发者快速上手跨平台应用开发。

weixin_28826545的博客 576

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

if __name__ == '__main__' 如何正确理解?

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与大家分享。    1、这段代码的功能    一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此i...

shan_9911的博客 410

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)

本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。

ooo22的博客 265

Python之“if __name__ == ‘__main__‘:“的理解

if __name__ == '__main__':

m0_46811353的博客 338

[Ethernet in CANoe]4--CANoe工程中SOME/IP报文的详细介绍(二)

介绍了SOME/IP报文的SD报文(ServiceDiscovery),本片文章开始继续介绍SOME/IP报文。

汽车ECU自动化测试 1111

用AT7456E给监控摄像头加OSD?5步搞定时间水印和Logo叠加

本文详细解析了如何使用AT7456E视频字符叠加芯片为监控系统添加专业级OSD功能,涵盖硬件设计、字符库编程和系统集成等关键步骤。通过5步操作实现时间水印和Logo叠加,提升监控系统的可用性和专业性,特别适合安防和工业视觉应用。

sea99的博客 1011

python 程序入口 main-Python中的main方法

估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看。但事实上python中是没有你理解中的“main()”方法的。言归正传if name == "main":可以看成是python程序的入口,就像java中的main()方法,但不完全正确。事实上python程序是从上而下逐行运行的,在.py文件中,除了def后定义函数外的代码都会被认为是“...

weixin_39630440的博客 5644

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

如何保护Python源码?从打包、混淆到加密字节码执行

在软件开发中,代码安全是一个重要的课题。Python 代码由于以源码形式直接部署到服务器并通过解释器执行,容易暴露其中的敏感信息,如 API 密钥、加密盐等。为了解决这一问题,开发者需要采取有效的措施对代码进行加密或保护。本文将详细探讨几种常见的方案,包括编译为可执行文件、生成字节码文件、代码混淆以及基于动态解密的自定义解释器等。这些方法各有特点,可根据实际需求选择适合的方案。第一种方法是编译为可执行文件。

General_zy的博客 3899

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OpenClaw:命令行的自主神经中枢与技能进化系统

CLI 工具正从静态命令增强迈向具备行为建模与实时反馈能力的智能协作者。OpenClaw 以行为轨迹建模和技能原子化封装为核心,将终端操作转化为可观测、可验证、可进化的执行单元;其基于 WebSocket 的实时反馈环实现毫秒级建议推送与闭环校准,显著提升运维、DevOps 和开发者在重复性任务中的语义理解与上下文响应能力。该范式不仅优化单点效率,更支撑团队级知识沉淀与协同进化。

633

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言学习路径:从环境搭建到项目实战,一个月掌握核心编程

编程语言是计算机科学的基础,其核心在于理解数据如何被处理、存储和操作。C语言作为一门接近硬件的编译型语言,其设计原理直接映射计算机的内存和CPU操作,这使得它成为理解计算机系统底层运作机制的理想选择。从技术价值看,掌握C语言不仅能编写高效、紧凑的代码,更能为学习操作系统、编译原理等高级主题打下坚实基础,这种底层认知能力是驾驭Python、Java等高级语言性能调优的关键。在应用场景上,C语言广泛用于系统软件(如Linux内核)、嵌入式开发、游戏引擎和高性能计算库的开发。本文聚焦于C语言学习,通过系统讲解环境

weixin_30727835的博客 297

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深入C++与QT高频面试题(不定时更新)

本文总结了C++、数据库和Qt相关的常见面试题,涵盖以下核心内容: C++特性与智能指针 智能指针(unique_ptr/shared_ptr/weak_ptr)解决内存管理问题 构造函数/析构函数特性,虚函数与纯虚函数区别 STL容器分类与特性(vector/list/set/map等) 多线程编程 线程创建方式(Thread类/moveToThread) 线程同步机制(互斥锁/条件变量/读写锁) 进程间通信方式(管道/共享内存/消息队列) 数据库基础 事务ACID特性与操作流程 索引原理与使用场景 关系

阿博的博客 1254

if __name__ == ‘__main__‘

目录 一、__name__ 1、概念 2、使用场景 二、解析 if __name__ == '__main__' 三、举例说明-if __name__ == '__main__'结果为true 四、举例说明-if __name__ == '__main__'结果为false 五、模块和包 一、__name__ 1、概念 __name__是属于Python中的内置类属性,代表对应程序的名称; 当__name__在当前执行的文件中使用时,它的值等于__main__;(if _

李黏黏的博客 5253

if __name__ == ‘__main__‘的详细讲解

在 Python 代码中,我们经常会看到 if __name__ == '__main__': 本文详细总结一下用法。 先给出结论,对该语句用法简单的解释就是: 如果if __name__ == '__main__' 所在模块是被直接运行的,则该语句下代码块被运行,如果所在模块是被导入到其他的python脚本中运行的,则该语句下代码块不被运行。 下边具体的讲解。 首先我们得先明白一个概念:程序入口。 程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Ja

大柳的博客 4万+

if __name__ == “__main__“: 理解

是 Python 中常用的一种条件判断语句,主要作用是。具体来说,当一个 Python 模块被导入时,Python 解释器会将该模块的文件名存储在内置变量__name__中。如果该模块是主程序入口,则__name__的值为字符串"__main__",否则__name__的值为该模块的文件名。因此,当我们使用进行条件判断时,只有当当前模块作为主程序入口时,才会执行if语句块内的代码。这个语句的作用可以有以下几个方面:模块测试:当我们新写一个模块时,可以在。

Drug discovery 3719
上一篇: 数据库索引的分类,类型,索引的优缺点,索引的优化
下一篇: 【python-yaml】解决报错:test_data.py::TestData::test_data: in “parametrize“ the number of names (2):
yipala
博客等级 码龄8年 90粉丝 48原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值