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

Python中if name == ‘main‘:的原理、作用和实践

在这里插入图片描述

🌈 个人主页:高斯小哥
🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 👈 希望得到您的订阅和支持~
💡 创作高质量博文,分享更多关于深度学习、PyTorch、Python领域的优质内容!(希望得到您的关注~)


🌵文章目录🌵

  • 一、原理 📚
  • 二、作用 🛠️
  • 三、实践 🚀
  • 四、总结 🎉
  • 五、最后 🤝

  👋🏼今天我们将一起探讨Python中一个非常常见且重要的语句:if __name__ == '__main__':。我们将深入了解它的原理、作用,并通过实践来掌握它的使用。

一、原理 📚

  首先,我们需要了解Python中的__name__变量。当一个Python文件被直接执行时,__name__变量的值会被设置为'__main__'。而如果这个文件被导入为模块时,__name__的值则会被设置为该模块的名字

  这个特性允许我们编写既可以被其他模块导入使用,又可以作为独立脚本执行的Python文件。通过检查__name__变量的值,我们可以决定是执行文件的主逻辑,还是仅仅提供函数和类供其他模块使用。

二、作用 🛠️

  if __name__ == '__main__':语句的主要作用是区分模块的直接执行和导入。它允许我们编写更加灵活和可重用的代码。

  • 模块导入时的行为:当其他模块导入该文件时,if __name__ == '__main__':语句块下的代码不会被执行。这样,我们可以确保只导入所需的函数和类,而不会执行不必要的代码。
  • 直接执行时的行为:当该文件作为独立脚本直接执行时,if __name__ == '__main__':语句块下的代码会被执行。这允许我们编写一些只在文件直接执行时才需要运行的代码,如测试代码、示例代码等。

三、实践 🚀

  下面我们通过一个简单的例子来实践if __name__ == '__main__':的用法。

假设我们有一个名为example.py的文件,内容如下:

def greet(name):print(f"Hello, {name}!")if __name__ == '__main__':greet("World")

  在这个例子中,我们定义了一个名为greet的函数,它接受一个参数name并打印一条问候消息。然后,我们使用if __name__ == '__main__':语句来判断该文件是否作为独立脚本直接执行。如果是的话,我们调用greet函数并传入字符串"World"作为参数。

现在,让我们来看看如何使用这个文件。

  1. 作为模块导入

  假设我们有一个名为main.py的文件,我们想要导入example.py中的greet函数并使用它。我们可以这样做:

import exampleexample.greet("Alice")

  在这个例子中,我们导入了example.py文件,并通过example.greet("Alice")调用了greet函数。注意,由于example.py中的if __name__ == '__main__':语句块下的代码不会被执行,所以不会打印出"Hello, World!"

$ python main.py
Hello, Alice!
  1. 作为独立脚本执行

  如果我们直接执行example.py文件,那么if __name__ == '__main__':语句块下的代码会被执行,因此会打印出"Hello, World!"

$ python example.py
Hello, World!

  通过这个例子,我们可以看到if __name__ == '__main__':语句在区分模块的直接执行和导入时的重要作用

四、总结 🎉

  通过本文的介绍和实践,我们深入了解了if __name__ == '__main__':语句的原理、作用和实践。它允许我们编写更加灵活和可重用的代码,通过区分模块的直接执行和导入来实现不同的功能。希望你在使用Python时能够充分利用这个特性,写出更加优雅和高效的代码!


五、最后 🤝

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

  🎉 感谢阅读,祝你编程愉快! 🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2805344.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Linux---权限管理(ACL权限、特殊位和隐藏属性)

目录 1.ACT权限 1.1什么是ACT权限 1.2ACT图解 2.操作步骤 2.1添加测试目录、用户、组,并将用户添加到组 2.2修改目录的所有者和所属组 2.3设定权限 2.4为临时用户分配权限 2.4.1添加临时用户 2.4.2为临时用户分配特定权限 2.4.3查看目录权限,注…

PostgreSQL如何使用UUID

离线安装时,一般有四个包,都安装的话,只需要开启uuid的使用即可,如果工具包(即 postgresql11-contrib)没有安装的话,需要单独安装一次,再进行开启。 开启UUID方法 下面介绍一下如何开启&#…

Unity实现帧序列

一、目的 1.想实现序列帧效果 自己使用Animation一直无法实现动画播放效果 二、参考 1. Unity序列帧动画——Sprite图片集制作UI动画_unity 序列帧动画图集-CSDN博客 结果:很好用,能实现效果 三、实操 新建Image,增加Animator组件&#x…

小保司的理赔是否有保障?

《小保司的理赔是否有保障?》 预计6-7分钟读完 连续日更:第7天 作者:罗师兄 微信号:luoyun515 同一个人,同样的重疾险责任, 同样的保额,同样的缴费方式, 不同的保司保费可以相…

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略

LLMs之Gemma:Gemma(Google开发的新一代领先的开源模型)的简介、安装、使用方法之详细攻略 导读:此文章介绍了Google推出的新一代开源模型Gemma,旨在帮助研发人员负责任地开发AI。 背景: >> Google长期致力于为开发者和研究人…

Sora:AI视频模型的革新者

随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。本文将从Sora的技术特点、应用场景以及对未来创作方式…

深入探究node搭建socket服务器

自从上篇中sokect实现了视频通话,但是是使用ws依赖库实现的服务端,所以最近再看ws源码,不看不知道,一看很惊讶。 接下来一点点记录一下,如何搭建一个简易的服务端socket,来实现上次的视频通讯。 搭建一个…

SwiftUI 支持拖放功能的集合视图(Grid)如何捕获手指按下并抬起这一操作

功能需求 假设我们开发了一款 SwiftUI 应用,其中用户可以通过拖放 Grid 中的 Cell 来完成一些操作。现在,我们希望用户在某个 Cell 被按下并随后抬起手指时得到通知,这能够实现吗? 如上图所示,我们准确地捕获到了手指在 Grid 的 Cell 上按下再抬起这一操作!那么它是如何…

PLC_博图系列☞基本指令“赋值”

PLC_博图系列☞基本指令“赋值” 文章目录 PLC_博图系列☞基本指令“赋值”背景介绍:赋值说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 赋值 背景介绍 这是一篇关于PLC编程的文章,特别是关于西门子的博图软件。我并不是专业的…

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode

Jetson Xavier NX 与笔记本网线连接 ,网络共享,ssh连接到vscode Jetson Xavier NX桌面版需要连接显示屏、鼠标和键盘,操作起来并不方便,因此常常需要ssh远程连接到本地笔记本电脑,这里介绍一种连接方式,通过…

【区块链】联盟链

区块链中的联盟链 写在最前面**FAQs** 联盟链:区块链技术的新兴力量**联盟链的定义****联盟链的技术架构**共识机制智能合约加密技术身份认证 **联盟链的特点**高效性安全性可控性隐私保护 **联盟链的应用场景****金融服务****供应链管理****身份验证****跨境支付**…

Vue2页面转化为Vue3

vue2element-ui转化为Vue3element plus 后台管理系统&#xff1a;增删查改 vue2页面&#xff1a; <template><div class"app-container"><div><el-form:model"queryParams"ref"queryForm"size"small":inline&qu…

高级语言期末2012级A卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!

AI生图效果&#xff0c;再次到达全新里程碑&#xff01; Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy 提示&#xff08;意译…

mybatis常用标签

一.定义sql语句 1.select 标签 属性介绍: &#xff08;1&#xff09;id :唯一的标识符. &#xff08;2&#xff09;parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user &#xff08;3&#xff09;resultType :语句返回值类型或别名。注意&#xff…

一周学会Django5 Python Web开发-Http请求HttpRequest请求类

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

架构篇36:微服务架构最佳实践 - 基础设施篇

文章目录 自动化测试自动化部署配置中心接口框架API 网关服务发现服务路由服务容错服务监控服务跟踪服务安全小结每项微服务基础设施都是一个平台、一个系统、一个解决方案,如果要自己实现,其过程和做业务系统类似,都需要经过需求分析、架构设计、开发、测试、部署上线等步骤…

document.cookie中expires 格式设置问题导致部分iphone safari上登录失效

一、问题描述 设备信息&#xff1a;iPhone 12, iOS 16.3 昨天有个小伙伴发现自己的iPhone safari打开网页登录时&#xff0c;登录页面显示登录成功&#xff0c;但实际进入首页后仍然显示未登录。多次测试&#xff0c;该问题在该设备上属于必现问题。 二、问题排查与解决 经过…

【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)

背景需求 上学期的周安排里&#xff0c;每班每周的自主游戏会轮到多个不同的内容 因此在每周的自主游戏观察有2次记录&#xff0c;观察的项目可以写不一样的&#xff0c; 如一位老师写沙水游戏&#xff0c;另一位写表演游戏 本学期&#xff0c;中班的自主游戏全部是户外的&am…

高并发系统实战课个人总结(极客时间)

高并发系统实战课 场景 读多写少 我会以占比最高的“读多写少”系统带你入门&#xff0c;梳理和改造用户中心项目。这类系统的优化工作会聚焦于如何通过缓存分担数据库查询压力&#xff0c;所以我们的学习重点就是做好缓存&#xff0c;包括但不限于数据梳理、做数据缓存、加缓…