Python 的 __name__ 变量,到底是个什么东西?

ANSYS Discovery 2023R1 入门:手把手教你玩转几何模型参数化(附历史追踪避坑指南) 本文详细介绍了ANSYS Discovery 2023R1中几何模型参数化建模的全流程,包括基础设置、参数化实战技巧及历史追踪避坑指南。通过Workbench集成和智能参数控制,工程师可以高效完成设计迭代,特别适合需要频繁调整几何模型的仿真场景。文章还提供了参数丢失的预防策略和工业应用实例,帮助用户快速掌握这一提升设计效率的核心技能。 阅读详情

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入


大家应该已经在很多 Python 脚本里见到过 name 变量了吧?它经常是以类似这样的方式出现在我们的程序里:

if __name__ ==  __main__ :
    main()

今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。

这个 name 拿来做什么的?

作为 Python 的内置变量,name 变量(前后各有两个下划线)还是挺特殊的。它是每个 Python 模块必备的属性,但它的值取决于你是如何执行这段代码的。
在许多情况下,你的代码不可能全部都放在同一个文件里,或者你在这个文件里写的函数,在其他地方也可以用到。为了更高效地重用这些代码,你需要在 Python 程序中导入来自其他文件的代码。
所以,在 name 变量的帮助下,你可以判断出这时代码是被直接运行,还是被导入到其他程序中去了。

这个name 变量可能取什么值?

当你直接执行一段脚本的时候,这段脚本的 name变量等于 main,当这段脚本被导入其他程序的时候,name 变量等于脚本本身的名字。
下面,让我举两个栗子来说明一下:

 

情况 1 - 直接运行脚本

假设我们有一个nameScript.py,代码如下:

def myFunction():
    print( 变量 __name__ 的值是   + __name__)
def main():
    myFunction()
if __name__ ==  __main__ :
    main()

当你直接执行 nameScript.py 时,流程是这样处理的:


在所有其他代码执行之前,__ name __变量就被设置为__ main __了。在此之后,通过执行 def 语句,函数 main() 和 myFunction() 的本体被载入。
接着,因为这个 if 语句后面的表达式为真 true,函数 main() 就被调用了。而 main() 函数又调用了myFunction(),打印出变量的值__ main __。

 

情况 2 - 从其他脚本里导入

如果你需要在其他脚本里重用这个 myFunction() 函数,比如在 importingScript.py 里,我们可以将 nameScript.py 作为一个模组导入。
假设 importingScript.py 的内容如下:

import nameScript as ns
ns.myFunction()

这时,我们就有了两个不同的作用域:一个是 importingScript 的,一个是 nameScript 的。让我画个示意图,你就能看出这和之前的区别了:


在 importingScript.py 里,__ name __变量就被设置为 __ main __。当导入 nameScript 的时候,Python 就在本地和环境变量 PATH 指向的路径中寻找对应名称的 .py 文件,找到之后,将会运行导入的文件中的代码。
但这一次,在导入的时候,它自身的 __ name __变量就被设置为了 nameScript ,接下来还是一样,函数 main() 和 myFunction() 的本体被载入。然而,这一次 if 语句后面的表达式结果为假 false,所以 main() 函数没有被调用。
导入完毕之后,回到 importingScript.py 中。现在 nameScript 模块中的函数定义已经被导入到当前的作用域中,于是我们通过 ns.myFunction() 的方式调用模块中的函数,这个函数返回的是模块内的变量的值 nameScript 。
如果你试着在 importingScript 中打印 name__ 变量的值,那当你直接执行 importingScript 的时候,它也会输出 __main 。原因在于,这个变量是在 importingScript 的作用域中的。

 

总结一下

今天和大家一起讨论了 __ name __ 变量在模组中的特性,分析了不同的调用方式对它的值有什么影响。利用这个特性,你既可以在程序中导入模组来使用,也可以直接把模组本身作为程序来运行。

Qt5.15.7编译报错问题汇总:python2安装环境导致的问题 导致编译生成的:RegExpJitTables.h文件大小为0。RegExpJitTables.h 能生成且大小不为0KB。可以看到,正确的python路径,执行编译路径后。再执行 configure XXX…尝试直接改,将其改为正确的路径。 阅读详情

相关推荐

告别玄学调参:手把手教你用LSTM-AutoEncoder为传感器数据做异常检测(实战篇)

本文详细介绍了LSTM-AutoEncoder在传感器数据异常检测中的工程化实践,包括数据预处理、模型架构设计和生产环境部署策略。通过结合LSTM的时间序列处理能力和AutoEncoder的特征提取优势,该方法能够有效识别温湿度、PM2.5等传感器数据的异常模式,适用于工业物联网和室内空气质量监测等场景。

weixin_29212429的博客 477

Python中的系统变量_ _name_ _功能解释

每一个Python程序文件都可以当作一个模块,模块以磁盘文件的形式存在。模块中可以是一段可以直接执行的程序(也称为脚本),也可以定义一些变量、类或函数,让别的模块导入和调用,类似于库函数。模块中的定义部分,例如全局变量、类定义、函数定义等,因为没有程序执行入口,所以不能直接运行,但对主程序代码部分有时希望只让它在模块直接执行的时候才执行,被其他模块加载时就不执行。在Python中,可以通过系统变量...

mingyang_wang的博客 3757

NVIDIA Jetson Orin DLA架构解析与AI推理优化实践

深度学习加速器(DLA)作为专用AI推理芯片,通过固定功能架构实现卷积、池化等神经网络操作的高效能比处理。其核心原理在于硬件级优化计算单元与数据流,相比通用GPU可提升3-5倍能效。在边缘计算场景中,DLA与GPU的异构协同成为关键,特别适合自动驾驶感知、机器人视觉等实时性要求高的应用。NVIDIA Jetson Orin平台通过结构化稀疏技术,在ResNet50等模型上实现近2倍性能提升。开发实践中需注意算子支持、精度校准等关键点,结合TensorRT工具链可充分发挥DLA在低功耗场景的独特优势。

weixin_32999557的博客 399

PyCharm 基本使用方法

一、代码模板设置 代码模板设置:FIle > Default settings > Editor > File and Code Templates > Python Script 1.1、PyCharm中的文件模版变量: ${PROJECT_NAME} - 当前的项目名 ${NAME} - 在文件创建过程中,新文件对话框的命名 ${USER} - 当前的登...

爱人BT的博客 1762

【COMSOL超材料和超表面仿真设计】

超材料和超表面的设计通常需要自定义材料属性。在COMSOL中,可以通过定义介电常数和磁导率的张量来模拟超材料的特性。对于超表面,通常需要定义表面阻抗或等效电路模型。

weixin_51101456的博客 1674

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

Python基础:__name__浅析

从转Python开始就经常见到Python主函数的写法 if __name__ == "__main__": 不过以前都是一带而过 只当是特定的写法 别人怎么写我就怎么写咯 不过今天突然有点好奇 于是写了几个Module对__name__的作用进行了一些验证 Independent Module print("independent module: __name__ ==", __name__)...

无名J0kзr的博客 250

智能车新手必看:如何用PID和差速转弯让小车跑得更稳(附代码示例)

本文详细介绍了智能车控制系统中PID算法和差速转弯的实现方法,包括位置式与增量式PID的选择、参数整定技巧以及编码器反馈的关键作用。通过代码示例和实战经验,帮助新手快速掌握智能车稳定行驶的核心技术,提升赛道表现。

mmm90的博客 122

python中 “__name__“的实际应用

在py文件中经常看到图中这句代码,初学者,特别是学习过其他语言,非系统的学习python基础语法的,看到它都会有些懵,它是做啥的?为什么要这样做? 一、__name__的作用: __name__是python的一个内置类属性,它存储模块的名称。 python的模块既可以被调用,也可以独立运行。而被调用时__name__存储的是py文件名(模块名称),独立运行时存储的是"__main__"。 ......

xiaox的专栏 4万+

电阻的基本原理、参数、应用与选型

电阻的基本原理、电阻的分类、参数,应用与选型,0欧姆电阻的介绍等。

luobeihai的博客 1万+

WorkBuddy 技能指南:基础办公与文档处理

WorkBuddy 不仅仅是一个对话工具——它通过技能(Skills)系统,将通用 AI 助手转变为具备专业领域能力的智能助手。每个技能都是一套经过精心设计的"能力包",包含专业知识、工作流程和专用工具。本文聚焦于文档处理类技能——这是日常工作中使用频率最高、最实用的能力集合。

u011186532的专栏 705

python 到底是个啥东西-Python 的 __name__ 变量,到底是个什么东西?

原标题:Python 的 __name__ 变量,到底是个什么东西?很多Python脚本里见到过__name__变量了吧?它经常是以类似这样的方式出现在我们的程序里:if __name__ == '__main__':main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,_...

weixin_37988176的博客 121

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4430

Python中的 __name__ 变量,到底是个什么东西?

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达编译&图片汉化 |欧剃大家应该已经在很多 Python 脚本里见到过 __name__ 变量了吧?它经常是以类似这样的方式出现在我们的程序里:if __name__ == '__main__': main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。 ...

小白学视觉 814

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python中什么叫变量_Python的 __name__ 变量,到底是个什么东西?

大家应该已经在很多 Python 脚本里见到过 name 变量了吧?它经常是以类似这样的方式出现在我们的程序里:if__name__==__main__:main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,__name__ 变量(前后各有两个下划线)还是挺特殊的。它...

weixin_28825959的博客 160

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python变量名是什么_Python 的 __name__ 变量,到底是个什么东西?

很多Python脚本里见到过__name__变量了吧?它经常是以类似这样的方式出现在我们的程序里:if__name__=='__main__':main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,__name__变量(前后各有两个下划线)还是挺特殊的。它是每个 Pytho...

weixin_34803738的博客 660

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

queryselectorall 怎么取name_Python 的 __name__ 变量,到底是个什么东西?

#「闪光时刻」主题征文 二期# 大家应该已经在很多 Python 脚本里见到过 __name__ 变量了吧?它经常是以类似这样的方式出现在我们的程序里:if __name__ == '__main__': main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,__name_...

weixin_39593519的博客 343

python中说_name_没有被定义_Python 的 __name__ 变量,到底是个什么东西?

当你直接执行一段脚本的时候,这段脚本的 __name__变量等于 '__main__',当这段脚本被导入其他程序的时候,__name__ 变量等于脚本本身的名字。下面,让我举两个栗子来说明一下:情况 1 - 直接运行脚本假设我们有一个name.py,代码如下:def myFunction():print('变量 __name__ 的值是 ' + __name__)def main():myFunc...

weixin_39937412的博客 1264

python变量名可以包括什么_Python 的 __name__ 变量,到底是个什么东西?

原标题:Python 的 __name__ 变量,到底是个什么东西?很多Python脚本里见到过__name__变量了吧?它经常是以类似这样的方式出现在我们的程序里:if __name__ == '__main__':main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,_...

weixin_39637571的博客 133

python main函数_Python 的 __name__ 变量,到底是个什么东西?

很多Python脚本里见到过__name__变量了吧?它经常是以类似这样的方式出现在我们的程序里:if __name__ == '__main__': main()今天,我就带大家详细扒一扒这个内置变量的用法,示范一下在你写的 Python 模组里要怎么用到它。这个 __name__ 拿来做什么的?作为 Python 的内置变量,__name__变量(前后各有两个下划线)还是挺特殊的。它是...

weixin_39631951的博客 104
上一篇: Python基本图形绘制
下一篇: (收藏向)25条超实用的Python一行代码
酸菜鱼编程
博客等级 码龄6年 155粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值