关于if __name__ =="__main__"的理解

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4 Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。 阅读详情

在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与大家分享。

   1、这段代码的功能

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

  举个例子,下面在test.py中写入如下代码:

print "I'm the first."
if __name__=="__main__":
    print "I'm the second."
并直接执行test.py,结果如下图,可以成功print两行字符串。即,if __name__=="__main__": 语句之前和之后的代码都被执行。

pythonèæ¬æµè¯
然后在同一文件夹新建名称为import_test.py的脚本,只输入如代码:

import test
执行import_test.py脚本,输出结果如下:
if __name__=="__main__"æ¼ç¤º

只输出了第一行字符串。即,if __name__=="__main__": 之前的语句被执行,之后的没有被执行。

   2、运行的原理

 每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“__main__”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,__name__ == 'main'结果为真。

 同样举例说明,我们在test.py脚本的if __name__=="__main__":之前加入print __name__,即将__name__打印出来。文件内容和结果如下,

pythonèæ¬

  可以看出,此时变量__name__的值为"__main__";
  再执行import_test.py,模块内容和执行结果如下:

__name__åé

  此时,test.py中的__name__变量值为test,不满足__name__=="__main__"的条件,因此,无法执行其后的代码。

 

个人理解:

在使用if __name__ =="__main__",可以在不同模块里都加上main函数,只有在本模块运行时,才会执行if __name__ =="__main__"里的内容,比如说,如果在模块test里,我们调用了一个函数,这个函数会输出一个字符串,这样在我们在main.py文件中导入这个模块后,我们运行main.py文件,那么也会输出这个字符串,但这个字符串不应该被输出的,所以我们添加了if __name__ =="__main__",判断一下当前运行的文件是不是在test.py,显然不是,那么if __name__ =="__main__"后面的语句就不会执行,字符串也就不会被输出了。

 

--------------------- 
作者:xiaoxik 
来源:优快云 
原文:https://blog.youkuaiyun.com/xiaoxik/article/details/78749361 
版权声明:本文为博主原创文章,转载请附上博文链接!

别再用默认参数了!手把手教你用2P2Z补偿网络优化Buck电源的动态性能 本文详细介绍了如何通过2P2Z补偿网络优化Buck电源的动态性能,解决默认参数下的负载阶跃响应问题。从频域分析到元件选型,再到实测验证,手把手教你提升相位裕度,显著降低超调量和稳定时间,适用于DCDC和开关电源设计。 阅读详情

相关推荐

Hi3559AV100制作ext4文件系统和烧录emmc

1、首先生成所需文件系统,见本博客<Hi3559AV100文件系统制作cramfs>。 2、使用工具生成EXT4文件系统 ./make_ext4fs -s -l 96M rootfs_hi3559av100.ext4 ./rootfs 3、烧录文件系统 mw.b 0x82000000 ff 0x12C00000;tftp 0x82000000 STM_...

阿Sir问道 7033

python中if __name__ == ‘__main__‘,__init__与self的解析。

python类中的学习

Truly_ds的博客 2595

概率整形 Peobabilistic Shaping PS 第一节

概率整形概述 概率整形(Peobabilistic Shaping, PS)是一种针对于调制格式的优化技术,它为光通信通信提供了非常高的灵活性,但不会增加系统复杂性。尤其是光通信中的非线性问题会限制功率,使得PS就像为光通信量身定做的一样。 PS技术能够在不增加发送功率的前提下,获得高频谱效率和传输容量。2016年在使用PS技术的实验中实现了6600km单模光纤的65Tbit/s数据的传输。 到目前位置PS技术的研究主要集中在具有相干检测的单载波光纤传输。 概率整形的基本原理 概率整形技术就是通过在编码前

Explore_OuO的博客 8126

Python - 语法 - if __name__ == “__main__“ - 程序入口

【代码】Python - 语法 - if __name__ == “__main__“ - 程序入口。

weixin_43633374的博客 190

2025虚幻游戏逆向工程解包尝试

2025虚幻游戏逆向工程解包指南 本文详细介绍了虚幻引擎5游戏逆向解包的完整流程,主要包括获取AES密钥、生成映射文件和导出资源三个关键步骤。作者在实际操作中遇到诸多难题:AES密钥获取工具存在加壳保护问题,映射文件生成器依赖复杂的VS编译环境,DLL注入工具的使用也存在技术门槛。通过多次尝试,作者发现部分游戏可直接搜索现成的AES密钥,而映射文件生成需要额外下载Memcury依赖库才能正常编译。文章提供了相关工具的下载链接和具体操作说明,但同时也指出每个环节都可能出现意外状况,逆向工程实际执行过程远比理论

wsdchong的博客 6149

记录:N10激光雷达串口编程,将数据存进 SQLite,并进行 ROS2 - cartographer 单雷达建图

N10 系列采用 TOF(time of flight)测距原理,通过测量调制激光的发射、返回时间差来测量物体与传感器的相对距离。激光发射器发出调制脉冲激光,内部定时器开始 从t1时刻计算时间,当激光照射到目标物体后,部分能量返回,当雷达接收到返回的激光信号时,在t2时刻停止内部定时器计时,光速C,激光雷达到达物体的距离D为:经过N10系列激光雷达内嵌的信号处理单元的实时解算得到探测物体的距离值,结合高精度自适应角度测量模块输出的角度信息,可以得到量程内周围 360 度环境 的二维平面信息。

m0_74013893的博客 1096

对“if __name__ ==‘__main__‘ “的理解

我们在学习python的时候,在代码的结尾,我们总会遇到这么一行代码。 if__name__=='__main__': test( ) 我第一次看见这行代码是懵逼的,不知道这句话要干嘛,而且看着 name 前后都带两个下划线的形式也很不常见,找了网上的解释,也没有说的特别明白的,要么很理论感觉看完不是很清楚。 首先,这样前后都加两个下划线的写法 "__name__" 在python中表示特殊变量,是可以直接引用的,显然我们平时用的变量不要用这种形式来表示。 这句代码的意思是我们通过判断特殊变量 _.

sunnycristina的博客 292

鼎捷T100——二次开发:维护作业添加非实体字段

非实体字段添加

weixin_52342654的博客 1156

python 中 if __name__=="__main__" 的用法

在编写规范的Python脚本中,经常会出现以下函数: > if __name__ == "__main__" 初学者可能会产生迷惑,其实它就是一个特殊的函数,类似于我们用 def 定义的,下面来解释一下。 - 1、这段代码的功能 一个 python 文件通常有两种使用方法: (1) 直接作为脚本执行; (2) 作为库文件被导入(import)其他python文件被...

LittleBee的博客 528

DSSAD自动驾驶行车记录系统体系结构和应用

通过对其感知、决策、控制等模块的详细研究,以及对商业化和消费市场发展趋势的分析,为该领域的研究和实践提供有价值的参考。通过克服技术、安全与隐私、法规与政策等方面的挑战,并紧跟人工智能、云端服务、用户体验等发展趋势,DSSAD系统将更好地适应自动驾驶行业的发展,提供更安全、智能、便捷的驾驶辅助服务。DSSAD体系结构通过数据收集模块、加密链接和数据存储模块和数据读取模块等关键模块的协同作用,构建了一个强大而灵活的自动驾驶数据记录系统,为未来智能出行提供了坚实的技术基础。

一只老虎的专栏 2207

130、NPU的仿真测试:使用Gem5进行全系统仿真

这篇文章摘要(149字): 本文分享了使用Gem5全系统仿真器验证NPU设计的实践经验。作者通过搭建自定义NPU模型并集成到Gem5系统中,实现了CPU-NPU-内存协同仿真。关键点包括:1) 使用SimObject机制构建可配置的NPU模型;2) 合理配置IO和内存总线避免访问冲突;3) 开发Linux驱动实现CPU与NPU通信;4) 利用Gem5调试功能监控内部状态。相比RTL仿真和FPGA验证,该方法能快速验证微架构设计并定位系统级问题,有效减少了流片风险。文章特别强调了时钟域配置、总线仲裁、对齐访问

m0_50546716的博客 122

python中if _name_=main的用法_python 中 if __name__=="__main__" 的用法

在编写规范的Python脚本中,经常会出现以下函数:> if __name__ == "__main__"初学者可能会产生迷惑,其实它就是一个特殊的函数,类似于我们用 def 定义的,下面来解释一下。1、这段代码的功能一个 python 文件通常有两种使用方法:(1) 直接作为脚本执行;(2) 作为库文件被导入(import)其他python文件被调用(模块重用)。if __name__==...

weixin_35975406的博客 3207

基于Qt C++开发一套大疆农业无人机的AI飞控系统

如果需要补充**多机协同作业代码**、**农田测绘数据导出**、**作业数据统计大屏**或**移动端地面站适配**功能,可以告知具体需求,我会针对性完善。"开启" : "关闭") << "喷洒,流量:" << flowRate << "L/min";emit errorOccurred(QString("SDK初始化失败,错误码:%1").arg((int)ret));report += QString("问题区域数量:%1\n").arg(info.problemAreas.size());

寒寒豆豆软件公司的博客 380

如何理解 if __name__==“main“

因此,`if __name__ == "__main__":` 是检查脚本是否被直接运行的一种方法。只有当脚本被直接运行时,该 if 语句下的代码才会被执行。当你希望在直接运行脚本时执行某些代码(比如调用函数),而在作为模块导入脚本时不执行某些代码时,这种方法非常有用。

zczyyds的博客 220

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

对Python的if __name =="__main__"一些理解

早上起床后,看到公众号:Python那些事对if __name=="__main__"的一些讲解后,产生了一些自己的理解。首先。if __name =="__main__":这是一个判断句,即判断__name__和__main__是否相等。那么相等是什么情况,不相等又是什么情况呢?不急,看小松鼠慢慢道来。先看看这段代码,我们将次断代码的文件命名为song.py:print("这是模块外的输出") ...

xiaosongshupy的博客 240

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

理解if __name__ =="__main__"

理解if __name__ =="__main__" 1. 函数代码 1. #!/usr/bin/python 2. # -*- coding: utf-8 -*- 3. """ 4. __name__和__main__含义详解 5. 6. """ 7. 8. def square(x): 9. retu...

sqxyq的专栏 263

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

对if __name__==“__main__“的理解

.if __name__=="__main__“我们经常在python程序中可以看到。 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。 __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 当模块被直接运行时,if 以下代码块将被运行,(作为脚本文件直接被执行) 当模块是被导入时,代码块不被运行。(被其他程序调用时) 举例:hello.py 文件 : print("Hel..

wnccmyr的博客 233

if __name__=="__main__": 的正确理解

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

txwsmsm7023_的博客 370

if __name__==“__main__“ python main函数的理解

_name__ 是一个标识模块名称的系统内建变量。意思是:若当前源代码文件(假设是model.py)被作为调用模块导入到其他文件,则__name__的值为“model.py”,此时语句if __name__=="__main__"后面的部分会跳过,不被执行;如果model.py是主模块(调用其他模块的模块),那么__name__的值为"__main__",解释器便会执行if __name__=="__main__"语句后面的部分。main函数可写可不写,但写上是一个良好的编程习惯。

Augenstern_rui的博客 69

Python中if __name__=="__main__"的理解

自学Python,遇到该问题,下面是自己的一点心得提示。 感谢网友的分享:http://www.jb51.net/article/51892.htm 1、__name__是一个变量,前后都加双下划线是因为他是一个系统变量,代指被引函数模块所在的文件名称 2、首先定义一个module.py #module.py def test(): print "we are in %s"%__name

会飞的小小猪的博客 289

if __name__ == __main__:什么意思_一个实例理解Python中的if __name__ ==“__main__”

事实上'__main__'是一个作用域的名称,当在脚本中读取、执行、交互时,模块的__name__等于'__main__'。一个实例让你理解Python中的__name__及__main__的关系#一个名为test的py文件a = __name__print(a)#输出结果为__main__#一个名为test_2的py文件(这里调用上面那个test.py)import testtest.a#输出结...

weixin_32771227的博客 5730

python 中if __name__ =="__main__":的个人理解

if __name__ =="__main__": 这行代码是将此代码所在的.py文件视为主模块__main__,只运行它,至于其他import导入的模块则不会运行。 相当于只运行主函数,其他模块则是处于被调用的身份。 转载于:https://www.cnblogs.com/sugar2019/p/11384341.html...

weixin_30745553的博客 76

if __name__ == __main___一个实例理解Python中的if __name__ ==“__main__”

事实上'__main__'是一个作用域的名称,当在脚本中读取、执行、交互时,模块的__name__等于'__main__'。一个实例让你理解Python中的__name__及__main__的关系#一个名为test的py文件a = __name__print(a)#输出结果为__main__#一个名为test_2的py文件(这里调用上面那个test.py)import testtest.a#输出结...

weixin_39877805的博客 432

Python中if__name__==__main__:该如何理解

程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。 而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没

AplusX 379

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

if name == ‘main’ 如何正确理解? 通俗的理解__name__ == ‘main’:假如你叫小明.py,在朋友眼中,你是小明(name == ‘小明’);在你自己眼中,你是你自己(name == ‘main’)。 if name == 'main’的意思是:当.py文件被直接运行时,if name == 'main’之下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main’之下的代码块不被运行。 1、这段代码的功能 一个python的文件有两种使用的方法,第一是

hs6605015的博客 2万+

python中 if__name__ == "__main__"的理解

有时候经常看到 python 代码中含有 if __name__ == '__main__' 的代码 ,但是却一直不知道是什么意思,可以通过相应的代码去试验即可知道其作用。 一、 理解 我们知道每个python文件既可以被直接执行,则可以作为脚本导入到其他文件中。从而构建各个模块的联系。而 if__name__ == '__main__' 的作用也是用来区分是自己作为自己的文件进...

HEERY551的博客 1万+
上一篇: # -*- coding: UTF-8 -*-
下一篇: Mysql 表的创建、修改、删除、复制
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值