python中main的作用_浅析python 中__name__ = '__main__' 的作用
很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = '__main__' 的作用,到底干嘛的?
有句话经典的概括了这段代码的意义:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
这句话,可能一开始听的还不是很懂。下面举例说明:
先写一个模块:
这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():
但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?
其执行的结果是:we are in module
但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
总结一下:
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
python中main的作用_浅析python 中__name__ = '__main__' 的作用相关推荐
- python中括号的作用_浅析python 中大括号中括号小括号的区分
python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...
- python 定时执行 爬虫 模块_浅析python实现scrapy定时执行爬虫
项目需要程序能够放在超算中心定时运行,于是针对scrapy写了一个定时爬虫的程序main.py ,直接放在scrapy的存储代码的目录中就能设定时间定时多次执行. 最简单的方法:直接使用Timer类 ...
- python字典嵌套字典构造_浅析python 字典嵌套
为什么需要嵌套? 有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套 .你可以在列表中嵌套字典.在字典中嵌套列表甚至在字典中嵌套字典. 字典列表 例如:字典alien_0包含 ...
- anaconda中的python如何进行关联分析_浅析python,PyCharm,Anaconda三者之间的关系
一.它们是什么? Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C,Java,C++等,一种编程语言. 2.Anaconda Anaconda指的是一个开源的Pytho ...
- python 多条件 选择 算法_浅析Python中的多条件排序实现
多条件排序及itemgetter的应用曾经客户端的同事用as写一大堆代码来排序,在得知Python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条 ...
- python中tracer函数意思_浅析Python编写函数装饰器
本节主要介绍编写函数装饰器的相关内容. 跟踪调用 如下代码定义并应用一个函数装饰器,来统计对装饰的函数的调用次数,并且针对每一次调用打印跟踪信息. 这是一个通过类装饰的语法写成的装饰器,测试如下: 运 ...
- python闭包两种写法_浅析Python闭包
一.什么是闭包python 在介绍闭包概念前,咱们先来看一段简短的代码数组 def sum_calc(*args):defwrapper(): sum=0for n inargs: sum+=n;re ...
- python派落塔问题_浅析python递归函数和河内塔问题
关于递归函数: 函数内部调用自身的函数. 以n阶乘为例: f(n) = n ! = 1 x 2 x 3 x 4 x...x(n-1)x(n) = n x (n-1) ! def factorial(n ...
- java 线程组作用_浅析Java中线程组(ThreadGroup类)
一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...
最新文章
- 【FFmpeg】自定义回调函数处理AVIOContext中的数据
- RedHat8 配置本地yum源
- Asp.net中的AJAX学习记录之一 AJAX技术的崛起与Asp.net AJAX的诞生
- Linux下动态共享库加载时的搜索路径详解
- hive sql 怎么实现循环_python怎么实现循环
- SqlServer的NEWID()函数巧用,生成GUID作为唯一标识用
- 单元格变色和图片透明
- quinlan的C4.5编译
- C#基础-应用程序域
- micropython移植教程_【教程】智能编程T-Watch手表初试micropython之电子秤教程
- text-indent的用法
- ajax连接前后端原理,前后端数据交互方法和原理
- 01-windows下git远程拉取项目
- 模拟grid点击事件
- OpenSSL 修复可导致 DoS攻击的高危漏洞
- 从零开始学习MXnet(四)计算图和粗细粒度以及自动求导
- 【OR】YALMIP 几何规划
- 万年历单片机c语言程序,51单片机c语言电子万年历完整程序.pdf
- 神舟IV号开发板STM32F107VCT6资料包(已购买)\STM32神舟IV号视频教程\第9集 串口实验 电脑超级终端连接串口1
- 神州三号开发板stm32 f103ze jlink连接失败拜求高手指点
热门文章
- golang fmt格式“占位符”
- 在64位windows下使用instsrv.exe和srvany.exe创建windows服务
- .NET获取不到js写的cookie解决方法
- web计算机导论读书报告,计算机导论 读书报告.doc
- opcache开启和关闭
- PHP用redis实现多进程队列
- 程序员怎样才能写出一篇好的技术文章
- JS的编码:escape,encodeURI,encodeURIComponent,解码:unescape,decodeURI,decodeURIComp
- H5弹窗,弹出toast(横竖屏通用)
- python3.6 websocket异步高并发_Python3.6 websocket开发