Python中“if name==‘main’:”的详细解答。__name__是魔法函数的一种,如果大家想详细了解和魔法函数相关的知识点击这里,里面整理了Python中常见的魔法函数用法,都有详细的代码解析:初识CV:Python:实例讲解Python中的魔法函数(高级语法)​zhuanlan.zhihu.com引言学过Java、C、C++的程序员应该都知道,每次开启一个程序,都必须写一个主函数作为程序的入口,也就是我们常说的main函数。如下所示, main()就是Java中的一个main函数。

public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}

}与Java、C、C++等几种语言不同的是,Python是一种解释型脚本语言,在执行之前不同要将所有代码先编译成中间代码,Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,“if namemain:”也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if namemain:”这条代码的意义之一。1. __name__的理解1.1 为什么使用__name__属性?Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。1.2 name__属性。name__属性是Python的一个内置属性,记录了一个字符串。若是在当前文件,name 是__main。在hello文件中打印本文件的__name__属性值,显示的是__main

若是导入的文件,name__是模块名。test文件导入hello模块,在test文件中打印出hello模块的__name__属性值,显示的是hello模块的模块名。

因此__name
== ‘main’ 就表示在当前文件中,可以在if name == ‘main’:条件下写入测试代码,如此可以避免测试代码在模块被导入后执行。2. 模块导入我们知道,当我们把模块A中的代码在模块B中进行import A时,只要B模块代码运行到该import语句,模块A的代码会被执行。
模块A:# 模块A

a = 100print('你好,我是模块A……')print(a)

模块B:# 模块B

from package01 import Ab = 200print('你好,我是模块B……')

print(b)运行模块B时,输出结果如下:

你好,我是模块A……
100
你好,我是模块B……
200

如果在模块A中,我们有部分的代码不想在被导入到B时直接被运行,但在直接运行A时可直接运行,那该怎么做呢?那就可以用到“if name==’main:”这行代码了,我们队上面用到的A模块代码进行修改:A模块代码修改为:

模块A

a = 100print('你好,我是模块A……')if __name__=='__main__':

B模块不做修改,直接执行B模块,输出结果如下:你好,我是模块A……
你好,我是模块B……
200看到了吗,A模块中的a的值就没有再被输出了。所以,当你要导入某个模块,但又不想改模块的部分代码被直接执行,那就可以这一部分代码放在“if name==‘main’:”内部。

python的__main__相关推荐

  1. Python __name__ == ‘__main__’详细解释-Python零基础入门教程

    目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 ​ 零基础 Python 学习路线推荐 : Python 学习 ...

  2. Python中’__main__’模块的作用

    Python不同于C/C++,程序执行并不需要主程序,如main(),而是文件自上而下的执行. 但很多Python程序中都有 1 if __name__ == '__main__': 2 statem ...

  3. Python中__main__.py文件的作用

    当我们创建一个Python包时,会有一个__init__.py文件,它是用来标识Python包的,用来与普通文件夹做区分. 我们同样可以在一个Python包中创建一个__main__.py文件,类似于 ...

  4. Python查看__main__.ListNode object at 0x0000000002A7CEB8 中的内容

    def printList(l):while l:print("%d, " %(l.val), end = '')l = l.nextprint('')

  5. 如果__name__ =='__main__':在Python中怎么办?

    In order to understand the details of __name__ variable and the if condition, let us go through a si ...

  6. python中main方法的用法_python __main__和__init__正确用法

    因为我对python很新,所以语言的这个特殊方面对我来说仍然是不透明的. 因此,假设我的项目包含许多包含代码的文件和两个"服务"文件:__ init__.py和__main__.p ...

  7. python yaml用法详解

    YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的.  一 ...

  8. YAML 在Python中的配置应用

    yaml是一种比xml和json更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构,听着就和Python很配对不对? yaml的介绍不在这里赘述,感兴趣可以自行百度下,先说下它的基本语法,还是配 ...

  9. python with语句与contextlib

    with语句用于异常处理,适用于存在资源访问的场合,无论在资源访问的过程中是否发生异常,都会执行必要的清理操作,释放资源,比如文件打开后自动关闭.线程中锁的自动获取和释放 要明白with语句是怎样使用 ...

最新文章

  1. android自定义文件选择,关于安卓自定义本地文件选择库的实现
  2. 2022计算机行业技术策略报告
  3. draw.io二次开发(2)文件解读
  4. ELK学习7_ELK文档资料:《ELK stack 权威指南/饶琛琳》勘误
  5. .htaccess 重定向_如何使用.htaccess将HTTP重定向到HTTPS
  6. 【英语学习】【WOTD】intoxicate 释义/词源/示例
  7. (100)Verilog HDL:UART波特率设计
  8. 动态头像 Android 实现,Android仿京东金融首页头像效果
  9. OpenCV基本图形绘制之圆
  10. JSON.parse() 和 JSON.stringify()使用
  11. 打卡1 谭浩强c语言程序设计第三章
  12. 阿里巴巴 Java开发手册 最新官网下载
  13. firewalld的练习
  14. 高德地图自定义镂空区域
  15. Kernel.org hacked – how to get Android repo?
  16. 移动商务,还是短信商务?
  17. 作家天地杂志作家天地杂志社作家天地编辑部2022年第23期目录
  18. 九宫八阵图之虐翼阵——网闸
  19. 【算法设计与分析】将数字分解为n个数字之和
  20. Android Selinux avc报错分析

热门文章

  1. HGE系列之六 管中窥豹(资源管理)
  2. css实现圆形水纹波动效果
  3. 51单片机实现呼吸灯
  4. [编程神域 C语言浮游塔 第④期] 函数的基本知识
  5. 卷积层提取的特征具有平移不变性
  6. laravel 左联报错问题
  7. 虚幻4毛发系统_虚幻4 半透明材质做彩色玻璃、塑料盒性能对比
  8. 申请2022年宣城市商标注册方法技巧大全,如何做到创新及时全面
  9. 2020上半年主要国产ERP软件厂商业绩对比
  10. linux cgi c环境配置,Linux下配置nginx支持.cgi | 系统运维