Python中的 if __name__ == ‘__main__‘

一、if name == ‘main

在Python的世界里,if name == ‘main’:这行代码就像是派对的入口,它决定了哪些部分是只在当前这个“派对”(或者说脚本)中直接执行的,哪些部分是可以被其他“派对”(或脚本)导入和复用的。

Python中每个文件都可以被看作是一个模块,当你直接运行这个文件时,Python解释器会将__name__这个特殊变量设置为’main’。这意味着,如果在这个文件中有一个if name == ‘main’:检查,那么其中的代码将仅在该文件作为主程序运行时执行。

二、为什么需要加if name == ‘main

使用if name == ‘main’:可以提供一种灵活性,使得代码既可以作为独立的程序运行,也可以作为模块被其他程序导入而不执行任何主要的代码块。这对于测试、重用代码以及写库是非常有用的。

三、实际应用举例

假设你写了一个美食配方的脚本,其中包含了多种烹饪方法和食材列表。如果你希望其他脚本也能够使用这些烹饪方法,同时又想保留能够独立展示所有配方的功能,你就可以使用if name == ‘main’:来实现。

# cooking.pydef make_pizza():print("Pizza made!")def make_salad():print("Salad made!")if __name__ == '__main__':make_pizza()make_salad()

当直接运行cooking.py时,会输出两种食物的制作方法。而如果从另一个脚本中导入cooking.py,则不会立即看到任何输出,但你仍然可以调用make_pizza()或make_salad()函数。

四、最佳实践

  1. 测试代码: 将测试代码放在if name == ‘main’:块中,可以避免它们在模块被导入时执行。
  2. 提高代码的复用性: 通过分离模块的执行入口和可复用的函数或类,使得代码更加模块化,更易于维护和复用。
  3. 编写脚本和库: 当你希望你的Python文件既能作为脚本直接执行,也能作为库被其他文件导入时,使用这种方式来区分运行环境非常有用。

五、总结

通过这个简单的if name == ‘main’:机制,Python为程序员提供了极大的灵活性和便利,使得我们可以轻松地管理代码的运行方式。就像在派对上区分主要活动和可以带回家的礼物一样,这帮助我们组织和分发Python代码,让它既能独立运行,也能被作为有用的工具和功能被其他程序所利用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】 Vue项目中的跨域配置指南

她坐红帐 面带浓妆 唢呐一声唱 明月光 这女子泪眼拜高堂 一拜天地日月 二拜就遗忘这一生 跪三拜红尘凉 庭院 大门锁上 杂乱的眼光 多喧嚷 这女子笑颜几惆怅 余生喜乐悲欢都无关 她眼中已无光 🎵 倪莫问《三拜红尘凉》 在前后端分离的项目开发中…

Java中的内存模型和例子

Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)规范中定义的一种关于内存访问、共享变量在多线程之间的可见性、以及原子性、顺序性的规则。Java内存模型的目标是定义程序中各个共享变量的访问方式,以及如何在…

python实例1.2:创建一个简易的命令行地址簿程序,允许用户添加、删除、查找和编辑联系人(详解及其知识点拓展)

目录 一、基础:地址簿程序代码附带注释 二、基础:地址簿程序详细分析 三、拓展:地址簿程序拓展,如何实现在地址簿程序中持久化数据? 四、拓展:地址簿程序拓展代码详细分析 一、基础:地址簿程…

SQL Sever 2008 安装教程

先从官网下载程序:下载地址 打开上述链接后,点击下载按钮。 就会跳出下面这个界面,如果你的电脑是64位的请选择下图中这两个程序。 下载完成后,在电脑磁盘中找到这两个文件,注意安装的顺序,先安装 SQLEXPR…

Linux:软硬链接及动静态库

一、Linux中的链接文件 1.1硬链接及应用场景 ln//创建硬链接 我们再创建一个硬链接生成的文件。 我们可以看到mlink.hard的inode和makefile.c的inode都是一样的,inode一样里面的数据自然也是一样。相当于对make.file进行了一个重命名,所以硬链接一定没…

2023年蓝桥杯省赛——买二赠一

目录 题目链接:1.买二赠一 - 蓝桥云课 (lanqiao.cn) 题目描述 输入格式 输出格式 样例输入 样例输出 样例说明 思路 队列贪心 代码实现 总结 题目链接:1.买二赠一 - 蓝桥云课 (lanqiao.cn) 题目描述 某商场有 N 件商品,其中第 i 件…

漫谈:“标准”是一种幻觉 C++语言标准的意义

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 “标准”这个词很迷惑&#xf…

基于SpringBoot注入Bean形式的监听(端口)

起一个线程、监听对应的端口,注入到容器 package com.port.component;import com.port.service.PortListenerService; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.stereoty…

铸铁平台的单围和双围是什么——北重机械

铸铁平台的单围和双围是指平台的围栏结构。单围指平台只有一面围栏,通常用于平台的三个边界上,另一边是与建筑物相连的。双围指平台两侧围栏都有,即平台四个边界都有围栏。双围结构比单围结构更加安全,可以防止人员和物品从平台四…

CleanmyMac 苹果电脑清理软件,为你的 Mac 提速!

Apple Macbook 已成为当今职场不可或缺的高效助手,尤其在普遍的远程办公场景下,其运行流畅度对工作效率及用户体验至关重要。虽然长期使用会使Mac电脑性能自然衰退,但大部分导致系统变慢的因素其实可经由用户自行调整得到显著改善&#xff0c…

linux 设置命令输入行高亮(与软件无关:xshell等)

在命令执行后输出内容比较多的情况下,很难查看自己的历史命令 这个配置是系统的配置:取消.bashrc文件中force_color_prompt=yes的注释即可 (和连接服务器的软件无关) 具体的操作如下: 执行以下命令,查看配置所在的行数root@hecs-166280:~# cat .bashrc -n | grep force_…

Java Lambda 表达式(详细)

Java Lambda 表达式 Lambda 的发展史 Java Lambda 表达式是在 Java 8 版本中引入的重要特性,它描述了一种更简洁、更灵活的方式来处理函数式编程。 在 Java 8 之前,要实现函数式编程,需要通过匿名类实现接口的方式。这样的代码通常比较冗长…

深入MyBatis的动态SQL:概念、特性与实例解析

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。它可以使用简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO,即普通的 Java 对象为数据库中的记…

MacOS Docker 部署 Redis 数据库

一、简介 Redis是一个开源的、使用C语言编写的、基于内存亦可持久化的Key-Value数据库,它提供了多种语言的API,并支持网络交互。Redis的数据存储在内存中,因此其读写速度非常快,每秒可以处理超过10万次读写操作,是已知…

milvus search api的数据结构

search api的数据结构 此api的功能是向量相似度搜索(vector similarity search) 一个完整的search例子: 服务端collection是一个hnsw类型的索引。 import random from pymilvus import (connections,Collection, )dim 128if __name__ __main__:connections.connect(alias…

VUE 实现路由的基本原理

路由 基本概念 在前端技术早期,所有页面的跳转通过更改url,浏览器页面刷新获取新的页面内容,这种粗糙的交互方式,一直等待优化。 后来,改变发生了——Ajax 出现了,它允许人们在不刷新页面的情况下发起请求&#xff0…

Django检测到会话cookie中缺少HttpOnly属性手工复现

一、漏洞复现 会话cookie中缺少HttpOnly属性会导致攻击者可以通过程序(JS脚本等)获取到用户的cookie信息,造成用户cookie信息泄露,增加攻击者的跨站脚本攻击威胁。 第一步:复制URL:http://192.168.43.219在浏览器打开,…

17、子矩阵的和(含源码)

子矩阵的和 题目描述 输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数n,m&…

基于java JSP 实现的固定资产管理系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea 系统展示 前台首页功能模块 固…

1.8.2 卷积神经网络近年来在结构设计上的主要发展和变迁——VGGNet

1.8.2 卷积神经网络近年来在结构设计上的主要发展和变迁——VGGNet 前情回顾:1.8.1 卷积神经网络近年来在结构设计上的主要发展和变迁——AlexNet VGGNet出现在2014年的ILSVRC上,单个模型就将图像分类任务的Top-5错误率降低到8.0%;如果采用多…