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

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

大家好,又见面了,我是你们的朋友全栈君。

if __name__ == ‘__main__’:的作用

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

  • 直接执行

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

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

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

  • import 执行

然后在同一文件夹新建名称为 import_test.py 的脚本,输入如下代码:

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

执行 import_test.py 脚本,输出结果如下:

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

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

if __name__ == ‘__main__’:的运行原理

每个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中if __name__ == ‘__main__‘:的作用和原理

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

可以看出,此时变量__name__的值为”__main__”。

再执行 import_test.py,执行结果如下:

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137981.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月1日 上午10:16
下一篇 2022年6月1日 上午10:16


相关推荐

  • 小学没跟上编程的步伐,长大了这样弥补,网友:一切都是为了生活「建议收藏」

    小学没跟上编程的步伐,长大了这样弥补,网友:一切都是为了生活「建议收藏」浙江省今年9月份开始的新学期,三到九年级信息技术课将同步替换新教材,其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。随着我国北京、上海、广州、重庆、江苏等多地政策推广少儿编程教育的力度逐步增大,家长们愈发重视编程教育,一方面可以为高考选中的信息技术课程做铺垫,另一方面从小培养大数据意识。因为学习少儿编程除了帮孩子适应未来时代发展潮流,还可以培养孩子的抽象思考能力,帮助孩子训练整合信息、融汇贯通

    2022年5月16日
    46
  • JDBC批处理executeBatch

    JDBC批处理executeBatch

    2021年12月31日
    48
  • 一般人到底要不要学Python_Python值得学吗

    一般人到底要不要学Python_Python值得学吗前言本人纯屌丝一枚,在学python之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说自学python,一般人我还是劝你算了吧。因为我就是那个一般人。基础真的很简单,是个人稍微认点真都能懂,这就是好多人说的python简单、易懂、好学,然后就是一顿浮夸的言论,误导那些小白,再然后那些小白也就跟着浮夸。这里我就给那些轻浮的人泼一桶冷水,懂跟学会是一码事吗?先来说哈python这个就业哈,我现在生活在祖国的肚皮上–成都,(嗯,有想了解川西迷你小环线的在下面留言哦),下面亲身经历,我喃,

    2025年8月30日
    9
  • 第五章《函数》

    第五章《函数》

    2021年5月28日
    120
  • 构造有参数的线程ParameterizedThreadStart

    构造有参数的线程ParameterizedThreadStart构造有参数的线程就得需要用到ParameterizedThreadStart,查看从元数据可以看出ParameterizedThreadStart是一个委托,参数类型必须是Object类型。我们通过线程对象的Start方法可以将参数传入,如thread.Start(“20191230”),此时参数“20191230”就会传递给子线程要执行的方法。代码:classProgram…

    2022年7月15日
    18
  • Symantec 卸载密码方法

    Symantec 卸载密码方法Symantec卸载密码方法最的有很多朋友问…方法一:当时就是输入在服务器端设置的密码(诺顿的默认密码是symantec)方法二:修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6CurrentVersion\AdministratorOnly\Security修改UseV…

    2022年6月3日
    210

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号