Python 中__name__ == ‘__main__‘使用说明

在学习C语言的时候,程序的运行是从main函数开始的,因此,功能代码一般写到main函数中,子程序如果想要调用,也需要在main函数中进行调用。
然而,Python语言中,程序从第一行就开始执行(定义函数除外) ,并不需要编写main函数。

可以直接看1.3总结

1 __name__ 是什么

name 是Python的一个内置属性,属于全局变量,每个py文件都有一个自己的__name__属性。
关于__name__属性值,却有两种不同情况。

1.1 示例1

假设新建一个py文件,编写如下程序,运行这个文件,观察__name__的属性值。

print("当运行这个文件时,观察__name__的属性值")
print('__name__的值为:', __name__)

可以看到输出中__name__的属性值为: __main__
在这里插入图片描述

1.2 示例2

新建一个py文件,名称假设为test.py,在文件中编写一段程序:

print("test文件被调用了!")
print('__name__的值为:', __name__)

再新建一个py文件,名称假设为test1.py,在文件中编写一段程序,并且调用该程序。

import test
print("调用程序完成")

此时,运行test1.py这个文件,就会发现输出结果中__name__的属性值为:test,也就是文件名。
在这里插入图片描述

1.3 总结

name 是Python的一个内置属性,当自己运行时,它的属性值就为 __main__,
这个文件被调用时,这个文件的属性值就成了它的文件名。

2 __name__ 作用

由上文可知,当不同运行方式下,该属性的属性值是不同的。然,在编写项目中,可能会写到很多的模块文件,对于某一个模块文件,为了验证其中某个函数是否运行良好,可以在该模块文件加入

if __name__ == '__main__:#测试代码1#测试代码2		

这种写法,可以就区分了,如果单独运行这个模块文件时,就会调用想测试的代码进行测试,如果当其它文件调用这个模块时,就不会运行这里面的测试代码。

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

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

相关文章

node使用fs模块(二)—— 读取文件的基本使用(普通读取、同步读取等、流式读取)

文章目录 一、读取文件1. 参数说明2. 基本使用3.读取文件的同步和异步 二、流式文件写入(fs.appendFile)1. 参数说明2.基本使用 一、读取文件 1. 参数说明 参数1: path——读取的文件路径(必填) 参数2: op…

25 行为型模式-备忘录模式

1 备忘录模式介绍 备忘录模式(memento pattern)定义: 在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态. 2 备忘录模式原理 3 备忘录模式实现 /*** 发起人角色**/ public class Originator {private Strin…

云安全-云原生技术架构(Docker逃逸技术-特权与危险挂载)

0x00 云原生技术-docker docker容器和虚拟机的对比:前者是将运行环境打包,封装一个环境。后者是将整个系统打包,封装一个系统。在操作使用上来说各有利弊。 0x01 docker容器的三种逃逸类型 特权模式启动(不安全的启动方式&…

MyBatis-Plus使用——配置yml参数 常用的注解@Table,@TableId,@IdType,@TableField,CRUD的API接口

前言 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 本系列博客结合实际应用场景,阐述MyBatis-Plus实际…

redis的分布式锁

分布式锁是一种用在分布式系统中实现同步和互斥访问的机制。 1、分布式锁概念 满足分布式系统或者集群模式下,多进程可见并且互斥的锁。 分布式锁的核心思想就是让分布式集群中的节点都适用同一把锁,只要大家使用的是同一把锁,就能锁住线程…

AGENTTUNING:为LLM启用广义的代理能力

背景 翻译智谱这篇文章的初衷是,智谱推出了他们所谓的第三代大模型。这第三代的特点在哪呢:个人总结主要有一下几个点: 1.用特定prompt方式自闭环方式解决安全注入问题 2.增加了模型function call、agent能力 3.具备代码能力 4.做了能力…

Data Stream 复习(考试向)

Data Stream Review OverallUniform SamplingBloom FilterMisra-Gries AlgorithmCountMin Sketch AlgorithmCount Sketch Algorithm Overall Uniform Sampling Bloom Filter 一个箱子没有球的概率可以表示为 (1 - 1/n)^m 的原因是基于以下逻辑: 对于第一个球&#x…

【卷积神经网络】YOLO 算法原理

在计算机视觉领域中,目标检测(Object Detection)是一个具有挑战性且重要的新兴研究方向。目标检测不仅要预测图片中是否包含待检测的目标,还需要在图片中指出它们的位置。2015 年,Joseph Redmon, Santosh Divvala 等人…

360加固APP后启动崩溃—注意加固前后签名是否一致

如下截图所示,我今天就是遇到了这个问题,这个问题是比较好解决,但如果官网有显眼指引说明会不会对开发者更友好些呢? 首先我们给360的加固包是带有自己的签名的,然后经360加固过后(免费的加固服务&#xf…

Mybatis—XML配置文件、动态SQL

学习完Mybatis的基本操作之后&#xff0c;继续学习Mybatis—XML配置文件、动态SQL。 目录 Mybatis的XML配置文件XML配置文件规范XML配置文件实现MybatisX的使用 Mybatis动态SQL动态SQL-if条件查询 \<if\>与\<where\>更新员工 \<set\>小结 动态SQL-\<forea…

按相同时间切割长视频

需求 将一段1小时的.mkv视频&#xff0c;按每5分钟切割&#xff0c;并转成.mp4 工具 格式工程 x64 5.15&#xff0c;下载 这真是个好工具&#xff0c;考虑过PR&#xff0c;无意间发现这软件很强大 实现步骤 第一步&#xff1a;选择视频&#xff0c;导出MP4&#xff0c;添…

HTML基础

HTML 基础 HTML 结构 HTML 代码是由 “标签” 构成的. <body>hello</body>第一个html 文件 <html> <head></head><body>hello world</body> </html>下面我们看一下这个代码的特点: html 代码是通过标签来组织的, 形如 &l…