调用文章是:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431845183474e20ee7e7828b47f7b7607f2dc1e90dbb000#0
的评论 关于代码if name == 'main': 可能看了之后可能挺晕的,下面举几个例子解释下,希望能让大家对这行的代码的功能有更深的认识,还是那句话,欢迎大家指正定会虚心接受。 先编写一个测试模块atestmodule.py #!/usr/bin/env python3
# -*- coding: utf-8 -*- ' a test module ' def addFunc(a,b):
return a+b print('atestmodule计算结果:',addFunc(1,1)) 再编写一个模块anothertestmodule.py来调用上面的模块: #!/usr/bin/env python3
# -*- coding: utf-8 -*- ' a test module ' import atestmodule print('调用anothermodule模块执行的结果是:',atestmodule.addFunc(12,23)) 在刚才两个模块的路径(我的路径为:“C:\work”)中打开cmd,用命令行运行atestmodule.py: C:\work>python atestmodule.py
atestmodule计算结果: 2 在刚才两个模块的路径中打开,用命令行运行anothertestmodule.py: C:\work>python anothertestmodule.py
atestmodule计算结果: 2
调用test模块执行的结果是: 35 #显然,当我运行anothertestmodule.py后第一句并不是调用者所需要的,为了解决这一问题,Python提供了一个系统变量:__name__ #注:name两边各有2个下划线__name__有2个取值:当模块是被调用执行的,取值为模块的名字;当模块是直接执行的,则该变量取值为:__main__ 于是乎,被调用模块的测试代码就可以写在if语句里了,如下: #!/usr/bin/env python3
# -*- coding: utf-8 -*- ' a test module ' def addFunc(a,b):
return a+b if __name__ == '__main__':
print('atestmodule计算结果:',addFunc(1,1)) 当再次运行atestmodule.py: C:\work>python atestmodule.py
atestmodule计算结果: 2 #结果并没有改变,因为调用atestmodule.py时,__name__取值为__main__,if判断为真,所以就输出上面的结果 当再次运行atestmodule.py: C:\work>python anothertestmodule.py
调用test模块执行的结果是: 35 #此时我们就得到了预期结果,不输出多余的结果。能实现这一点的主要原因在于当调用一个module时,此时的__name__取值为模块的名字,所以if判断为假,不执行后续代码。 所以代码if name == 'main': 实现的功能就是Make a script both importable and executable,也就是说可以让模块既可以导入到别的模块中用,另外该模块自己也可执行。

关于python中__name__=='__main__'的解释的更多相关文章

  1. 【转】浅析python 中__name__ = '__main__' 的作用

    原文链接:http://www.jb51.net/article/51892.htm 举例说明解释的非常清楚,应该是看到的类似博文里面最简单的一篇: 这篇文章主要介绍了python 中__name__ ...

  2. 浅析python 中__name__ = '__main__' 的作用

    引用http://www.jb51.net/article/51892.htm 很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码 ...

  3. 002_浅析python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  4. 理解 python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  5. python 中__name__ = '__main__' 的作用,到底干嘛的?

    python 中__name__ = 'main' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and execu ...

  6. 谈谈python 中__name__ = '__main__' 的作用

    最近刚刚学习python,看到别人的源代码中经常出现这样一个代码段: if __name__ = '__main__' dosomting() 觉得很晕,不知道这段代码的作用是什么,后来上网查了一些资 ...

  7. python中__name__=='__main__'的作用

      学习python语法的过程中碰到了__name__=='__main__',这里做个笔记. 作用   这段代码的作用就是让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行. 测试 先 ...

  8. python 中__name__ = '__main__' 的作用

    有句话经典的概括了这段代码的意义: "Make a script both importable and executable" 意思就是说让你写的脚本模块既可以导入到别的模块中用 ...

  9. python:浅析python 中__name__ = '__main__' 的作用

    有句话经典的概括了这段代码的意义: “Make a script both importable and executable” 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可 ...

随机推荐

  1. APP注册邀请码

      小火箭:MrZOpba685OMLSpanBKFtkxcQf5eGOY   文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论

  2. Keepalived系列一:Keepalived.conf 详解

    接上一篇博客: http://www.cnblogs.com/xiaoit/p/4499703.html 1:按照上篇博客安装后的配置文件在 /usr/local/etc/keepalived/kee ...

  3. Python实现微信扫码支付模式二(NativePay)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7649207.html 核心代码github地址:https://github.com/ygj0930/Pyth ...

  4. Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) - Enterprise Edition

    Windows下安装Oracle Database 12c Release 1(12.1.0.2.0) 最近因需要在Oracle 数据库上建立ODI的资料档案库,需要安装Oracle Database ...

  5. 11、java5线程池之异步任务CompletionService

    JDK文档描述: public interface CompletionService<V> 将生产新的异步任务与使用已完成任务的结果分离开来的服务.生产者 submit 执行的任务.使用 ...

  6. java 数组声明方法

    //数组 public class Test16{ public static void main(String args[]){ //声明一: int [] x; x = new int[3];// ...

  7. python 什么叫迭代

    # -*- coding: cp936 -*- #xiaodeng #python 27 #什么叫迭代 #如果给定一个list/tuple,可以通过for循环遍历出来,这种遍历我们称之为迭代 #案例3 ...

  8. H5商城,纯前端静态页面

    发布时间:2018-09-28   技术:jquery1.10.1+swipeSlide+jquery.mmenu+jquery.touchSwipe+cityinit   概述 纯手写H5商城,2年 ...

  9. flex水平垂直居中

    <div class="parent"> <div class="children">我是通过flex的水平垂直居中噢!</div ...

  10. 【laravel5.4】安装指定版本的predis 和 处理laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误

    (predis下载地址:https://packagist.org/packages/predis/predis) 1.cmoposer 命令行: php composer require predi ...