在Python代码的编写中,经常会用到这么一句:

if __name__ == "__main__":

      ....

这句代码之前的语句在整个模块被其他文件调用的时候会被运行,而这句代码之后的语句则不会,经过多次的查阅资料,我得出一下的解释:

__name__变量在单独运行此模块(.py文件)时,其表示的内容为”__main__",而当这个模块被其他模块调用时,__name__变量则表示被调用的这个模块的名字(不包含.py这三个字符)。

当模块直接执行的时候,__name__变量="__main__"="__main__",所以此句后边的代码也会被执行。

而当模块被调用的时候,__name__变量="模块名"≠"__main__",所以此句后面的代码不会被执行,得益于此种设定,我们可以自由的划定一个模块内的哪些功能可以被任意调用,哪些功能不能被调用,使用起来更加的方便,因为当我们写出import xxx时,xxx这个模块的内容会被提前加载,若有if __name__ == "__main__",则可以避免全部加载,减少负担(这里的原理是,运行过的py文件会产生一个同名后缀名为pyc的文件,我们知道,Python是一门解释性语言,我们编写好的代码经过解释器解释为计算机可以读懂的二进制语言,这个pyc文件就是不用解释,计算机能够直接运行的文件。

Python中关于__main__变量的问题的更多相关文章

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

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

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

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

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

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

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

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

  5. Python中什么是变量Python中定义字符串

    在Python中,变量的概念基本上和初中代数的方程变量是一致的. 例如,对于方程式 y=x*x ,x就是变量.当x=2时,计算结果是,当x=5时,计算结果是25. 只是在计算机程序中,变量不仅可以是数 ...

  6. Python中的高级变量类型

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...

  7. python中的私有变量

    class Test1: def f1(self): self.name ="张三" self.__age = 20 #使用名称变形实现私有变量 print(self.name) ...

  8. Python中什么是变量

    在Python中,变量的概念基本上和初中代数的方程变量是一致的. 例如,对于方程式 y=x*x ,x就是变量.当x=2时,计算结果是4,当x=5时,计算结果是25. 只是在计算机程序中,变量不仅可以是 ...

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

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

随机推荐

  1. SPOJ Another Longest Increasing Subsequence Problem 三维最长链

    SPOJ Another Longest Increasing Subsequence Problem 传送门:https://www.spoj.com/problems/LIS2/en/ 题意: 给 ...

  2. 【Docker】删除镜像

    删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE...] 1.删除所有未被 tag 标记和未被容器使用的镜像: docker image prune 2.删除所有未被容器使 ...

  3. MindV编入微软云计算中小企业解决方案

    鹰翔MindV思维导图软件基于云计算,曾作为windows azure云计算的一个样例介绍,收入中小企业解决方案中.http://www.microsoft.com/hk/smb/cloud/azur ...

  4. Linux 命令整理 vim

    Vim  一.官方网站 http://www.vim.org 二.背景 所有的 Unix Like 系统都会内建 vi 文书编辑器,但是在我们编程这里开发使用最多的要数 vim命令了. 三.操作 三种 ...

  5. Excel数据处理

    合并计算: 数据面板下的合并计算 然后设置好合并计算的区域 以及勾选 首行跟最左列

  6. jsp中点击一个图片跳转到另一个页面的方法

    1.这是jsp页面中的关于图片的那段代码 <img src="images/tj1.png " id="tj1"></img> 2.跳转 ...

  7. CentOs7.X下配置FTP

    https://blog.csdn.net/cc_want/article/details/85337241 CentOS7.x自带firewall防火墙,FTP使用需要开启20 21 22 3000 ...

  8. $Poj1737\ Connected\ Graph$ 计数类$DP$

    AcWing Description 求$N$个节点的无向连通图有多少个,节点有标号,编号为$1~N$. $1<=N<=50$ Sol 在计数类$DP$中,通常要把一个问题划分成若干个子问 ...

  9. ProxyPattern(代理模式)-----Java/.Net

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式.

  10. 「Poj1845」Sumdiv 解题报告

    题面戳这里 啥都别看,只是求 \(a^b\)所有的因数的和 思路: 真没想到! 其实我们可以先将\(a^b\)分解成质因数的 因为\(a^b\)的因数肯定是\(a^b\)的质因数在一定的条件下相乘而成 ...