Python3基础 if __name__ == '__main__'
对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。
而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。
一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。
举一个例子来说明一下,假设我们有一个 const.py 文件,内容如下:
PI = 3.14def main():print "PI:", PImain()
我们在这个文件里边定义了一些常量,然后又写了一个 main 函数来输出定义的常量,最后运行 main 函数就相当于对定义做一遍人工检查,看看值设置的都对不对。然后我们直接执行该文件(python const.py),输出:
PI: 3.14
现在,我们有一个 area.py 文件,用于计算圆的面积,该文件里边需要用到 const.py 文件中的 PI 变量,那么我们从 const.py 中把 PI 变量导入到 area.py 中:
from const import PIdef calc_round_area(radius):return PI * (radius ** 2)def main():print "round area: ", calc_round_area(2)main()
运行 area.py,输出结果:
PI: 3.14 round area: 12.56
可以看到,const 中的 main 函数也被运行了,实际上我们是不希望它被运行,提供 main 也只是为了对常量定义进行下测试。这时,if __name__ == '__main__'
就派上了用场。把 const.py 改一下:
PI = 3.14def main():print "PI:", PIif __name__ == "__main__":main()
然后再运行 area.py,输出如下:
round area: 12.56
再运行下 const.py,输出如下:
PI: 3.14
这才是我们想要的效果。
参考:http://blog.konghy.cn/2017/04/24/python-entry-program
转载于:https://www.cnblogs.com/gjh99/p/11176869.html
Python3基础 if __name__ == '__main__'相关推荐
- Python __name__ == ‘__main__’详细解释-Python零基础入门教程
目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习 ...
- python二郎成长笔记(一)(pip升级,python入门,基础,python2和3不同格式带来的问题,头文件引用的格式,变量的类型,__name__ == '__main__')
二郎的操作系统是windows,之前同时安装了python2和python3,因此在一些应用中还涉及了版本切换以及安装插件等问题. 同时安装是指在Anaconda中完成的,Anaconda(官方网站) ...
- python基础之python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- python3记录(2)— if __name__ == '__main__'
知乎回答:https://www.zhihu.com/question/49136398 博客解释:http://blog.konghy.cn/2017/04/24/python-entry-prog ...
- 01月26日【Python3 基础知识】
01月26日[Python3 基础知识] 5.1 九宫格 5.2 函数入门 5.3 判断某天为某年的第几天 5.1 九宫格 import random x = 0 l = [1,2,3,4,5,6,7 ...
- python基础知识整理-Python3基础知识(一)
1.使用类似三目运算符的方式来实现一个数的绝对值 if else # 输入一个数,然后利用一个语句求它的绝对值 num = int(input("请输入一个整数:")) num_a ...
- 190道Python3基础题以及解答
python基础 190道Python: 1..谈谈对 Python 和其他语言的区别 2 简述解释型和编译型编程语言 3 Python 的解释器种类以及相关特点? 4 Python3 和 Pytho ...
- Python3基础知识
Python3基础知识 学习路线主要参照:菜鸟教程 和 Python教程2020版 一.Python简介 1. What is Python? Python 是一个高层次的结合了解释性.编译性.互动性 ...
- Python3基础,这篇就够了(总结版)
目录 1.基础语法和基本数据类型 2.python中的运算符和类型详解 3.逻辑控制循环遍历自定义函数 4.堆栈.队列.元素操作 5.模块和包 6.输入和输出.序列化和反序列化.文件读写操作 7.异常 ...
最新文章
- 使用JavaMail发送邮件
- 【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源
- sitecore系列教程之目标功能有什么新意?
- php 字符串分割成两段,php 两个字符串分割合并的简单示例
- 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)
- About Manhattan Length
- Oracle union多表查询
- linux内核包转发过程(三)NIC帧接收分析
- Matlab绘图方法整理(超完整版)
- 通用时与儒略日代码解析
- 在国企的日子(第六章 大赛)
- amd显卡Linux查看显存,通过软件查看显存参数_显卡_显卡技术应用-中关村在线
- 内存规格的解释(Unbuffered DIMM,Registered DIMM和SODIMM)
- Vue3笔记_02setup与常用的Composition API(组合式API)
- vsphere虚拟服务器备份,使用云祺虚拟机备份软件快速备份VMware vSphere虚拟机
- 推荐一组用过好几年的非常稳定的dns
- Java面向对象编程之继承练习题(三)
- 计算机视觉论文-2021-06-24
- 使用计算机解决科学研究,应用计算机科学
- 数据库简单sql语句(CURD)