python的__main__
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 name’main:”也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if name’main:”这条代码的意义之一。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__相关推荐
- Python __name__ == ‘__main__’详细解释-Python零基础入门教程
目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习 ...
- Python中’__main__’模块的作用
Python不同于C/C++,程序执行并不需要主程序,如main(),而是文件自上而下的执行. 但很多Python程序中都有 1 if __name__ == '__main__': 2 statem ...
- Python中__main__.py文件的作用
当我们创建一个Python包时,会有一个__init__.py文件,它是用来标识Python包的,用来与普通文件夹做区分. 我们同样可以在一个Python包中创建一个__main__.py文件,类似于 ...
- Python查看__main__.ListNode object at 0x0000000002A7CEB8 中的内容
def printList(l):while l:print("%d, " %(l.val), end = '')l = l.nextprint('')
- 如果__name__ =='__main__':在Python中怎么办?
In order to understand the details of __name__ variable and the if condition, let us go through a si ...
- python中main方法的用法_python __main__和__init__正确用法
因为我对python很新,所以语言的这个特殊方面对我来说仍然是不透明的. 因此,假设我的项目包含许多包含代码的文件和两个"服务"文件:__ init__.py和__main__.p ...
- python yaml用法详解
YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的. 一 ...
- YAML 在Python中的配置应用
yaml是一种比xml和json更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构,听着就和Python很配对不对? yaml的介绍不在这里赘述,感兴趣可以自行百度下,先说下它的基本语法,还是配 ...
- python with语句与contextlib
with语句用于异常处理,适用于存在资源访问的场合,无论在资源访问的过程中是否发生异常,都会执行必要的清理操作,释放资源,比如文件打开后自动关闭.线程中锁的自动获取和释放 要明白with语句是怎样使用 ...
最新文章
- android自定义文件选择,关于安卓自定义本地文件选择库的实现
- 2022计算机行业技术策略报告
- draw.io二次开发(2)文件解读
- ELK学习7_ELK文档资料:《ELK stack 权威指南/饶琛琳》勘误
- .htaccess 重定向_如何使用.htaccess将HTTP重定向到HTTPS
- 【英语学习】【WOTD】intoxicate 释义/词源/示例
- (100)Verilog HDL:UART波特率设计
- 动态头像 Android 实现,Android仿京东金融首页头像效果
- OpenCV基本图形绘制之圆
- JSON.parse() 和 JSON.stringify()使用
- 打卡1 谭浩强c语言程序设计第三章
- 阿里巴巴 Java开发手册 最新官网下载
- firewalld的练习
- 高德地图自定义镂空区域
- Kernel.org hacked – how to get Android repo?
- 移动商务,还是短信商务?
- 作家天地杂志作家天地杂志社作家天地编辑部2022年第23期目录
- 九宫八阵图之虐翼阵——网闸
- 【算法设计与分析】将数字分解为n个数字之和
- Android Selinux avc报错分析