对于很多编程语言来说,程序都必须要有一个入口,比如 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__'相关推荐

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

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

  2. python二郎成长笔记(一)(pip升级,python入门,基础,python2和3不同格式带来的问题,头文件引用的格式,变量的类型,__name__ == '__main__')

    二郎的操作系统是windows,之前同时安装了python2和python3,因此在一些应用中还涉及了版本切换以及安装插件等问题. 同时安装是指在Anaconda中完成的,Anaconda(官方网站) ...

  3. python基础之python中if __name__ == '__main__': 的解析

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...

  4. python3记录(2)— if __name__ == '__main__'

    知乎回答:https://www.zhihu.com/question/49136398 博客解释:http://blog.konghy.cn/2017/04/24/python-entry-prog ...

  5. 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 ...

  6. python基础知识整理-Python3基础知识(一)

    1.使用类似三目运算符的方式来实现一个数的绝对值 if else # 输入一个数,然后利用一个语句求它的绝对值 num = int(input("请输入一个整数:")) num_a ...

  7. 190道Python3基础题以及解答

    python基础 190道Python: 1..谈谈对 Python 和其他语言的区别 2 简述解释型和编译型编程语言 3 Python 的解释器种类以及相关特点? 4 Python3 和 Pytho ...

  8. Python3基础知识

    Python3基础知识 学习路线主要参照:菜鸟教程 和 Python教程2020版 一.Python简介 1. What is Python? Python 是一个高层次的结合了解释性.编译性.互动性 ...

  9. Python3基础,这篇就够了(总结版)

    目录 1.基础语法和基本数据类型 2.python中的运算符和类型详解 3.逻辑控制循环遍历自定义函数 4.堆栈.队列.元素操作 5.模块和包 6.输入和输出.序列化和反序列化.文件读写操作 7.异常 ...

最新文章

  1. 使用JavaMail发送邮件
  2. 【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源
  3. sitecore系列教程之目标功能有什么新意?
  4. php 字符串分割成两段,php 两个字符串分割合并的简单示例
  5. 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)
  6. About Manhattan Length
  7. Oracle union多表查询
  8. linux内核包转发过程(三)NIC帧接收分析
  9. Matlab绘图方法整理(超完整版)
  10. 通用时与儒略日代码解析
  11. 在国企的日子(第六章 大赛)
  12. amd显卡Linux查看显存,通过软件查看显存参数_显卡_显卡技术应用-中关村在线
  13. 内存规格的解释(Unbuffered DIMM,Registered DIMM和SODIMM)
  14. Vue3笔记_02setup与常用的Composition API(组合式API)
  15. vsphere虚拟服务器备份,使用云祺虚拟机备份软件快速备份VMware vSphere虚拟机
  16. 推荐一组用过好几年的非常稳定的dns
  17. Java面向对象编程之继承练习题(三)
  18. 计算机视觉论文-2021-06-24
  19. 使用计算机解决科学研究,应用计算机科学
  20. 数据库简单sql语句(CURD)

热门文章

  1. 设计模式第19篇:访问者模式
  2. flex布局学习笔记
  3. 建立自己的git账户并保存资料的重要性
  4. python自动华 (四)
  5. 本案例通过ArrayList集合来显示Collection接口中的共性函数
  6. 第二章 个体软件过程
  7. 广西师范大学计算机调剂难吗,2014年广西师范大学考研调剂过来人给的建议
  8. jupyter notebook bp网络_全华班再次败北,TES奇葩BP背大锅!签来风哥能拯救滔搏吗?...
  9. 细说双 11 直播背后的压测保障技术
  10. 叮咚!您收到一份2021知位停车新品发布会暨合作伙伴大会邀请函