原文: http://blog.csdn.net/u011511601/article/details/53504355

Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执行。每个文件(模块)都可以任意写一些没有缩进的代码,并在载入时自动执行。为了区分 主执行代码和被调用文件,Python引入了变量:__name__。

1)当文件是被调用时,__name__的值为模块名;

2)当文件被执行时,__name__的值为 ‘__main__’。

基于此特性,为测试驱动开发提供了很好的支持,我们可以在每个模块中写上测试代码,这些测试代码仅当模块被Python直接执行时才会运行,代码和测试完美的结合在一起。

1、典型的Python文件结构:

2、Python中的__name__举例

  1. #hello.py
  2. def sayHello():
  3. str="hello"
  4. print(str);
  5. if __name__ == "__main__":
  6. print ('This is main of module "hello.py"')
  7. sayHello()

python作为一种脚本语言,我们用python写的各个module都可以包含以上那么一个类似c中的main函数,只不过python中的这种__main__与c中有一些区别,主要体现在:

1、当单独执行该module时,比如单独执行以上hello.py: python hello.py,则输出

  1. This is main of module "hello.py"
  2. hello

可以理解为"if __name__=="__main__":" 这一句与c中的main()函数所表述的是一致的,即作为入口;

2、当该module被其它module 引入使用时,其中的"if __name__=="__main__":"所表示的Block不会被执行,这是因为此时module被其它module引用时,其__name__的值将发生变化,__name__的值将会是module的名字。比如在python shell中import hello后,查看hello.__name__:

  1. >>> import hello
  2. >>> hello.__name__
  3. 'hello'
  4. >>>

3、因此,在python中,当一个module作为整体被执行时,moduel.__name__的值将是"__main__";而当一个module被其它module引用时,module.__name__将是module自己的名字,当然一个module被其它module引用时,其本身并不需要一个可执行的入口main了。

Python __name__变量的更多相关文章

  1. python __name__ 变量的含义

    python __name__ 变量的含义 if __name__ == '__main__': tf.app.run() 当python读入程序时,会初始化一些系统变量.如果当前程序是主程序,__n ...

  2. (转)Python学习笔记(1)__name__变量

    Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执行.每个文件(模块)都可以任意写一些没有缩进的代码,并在载入时自动执行.为了区分 主执行代码和被调用文件,Python引入 ...

  3. python的__file__和__name__变量

    #现在的目录结构为 #现在想要在web2/bin.py中调用web3/main.py模块中的方法 from web3 import main main.foo() #在pycharm中执行 ##### ...

  4. Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  5. python 本地变量和全局变量 locals() globals() global nonlocal 闭包 以及和 scala 闭包的区别

    最近看 scala ,看到了它的作用域,特此回顾一下python的变量作用域问题. A = 10 B = 100 print A #10 print globals() #{'A': 10, 'B': ...

  6. python 对象/变量&赋值的几点思考

    python 对象/变量 对象 Every object has an identity, a type and a value. An object's identity never changes ...

  7. python 静态成员变量

    python 静态成员变量 python 也可以定义静态成员变量,就是类的变量. 注意python的静态成员变量只能通过 类.变量名 的形式获取 class A: a1 = 0 def __init_ ...

  8. 配置python环境变量(转)

    默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1.首先需要在系统中注册python环境变量:假设python的安装路 ...

  9. python学习 变量的操作 与 基本数据类型

    一变量(本文使用python3.5): #变量:是计算机内存中的一块区域,变量可以存储规定范围内的值,变量可以改变#在python中变量是计算机内存中数据的引用 python的变量没有明显的类型,具体 ...

随机推荐

  1. CreateThread和_beginthread区别及使用

    CreateThread 是一个Win 32API 函数, _beginthread 是一个CRT(C Run-Time)函数, 他们都是实现多线城的创建的函数,而且他们拥有相同的使用方法,相同的参数 ...

  2. easyui再学习的一部分代码

    <%-- Created by IntelliJ IDEA. User: zhen Date: // Time: : To change this template use File | Set ...

  3. 火狐下,td 的 bug;

    想实现类似的效果,看代码, <div style="width:488px;float:left; margin:-52px 0px 15px 15px;"> < ...

  4. 手机号的 AES/CBC/PKCS7Padding 加解密

    前言:接口中上次的手机号码和密码是传入的加密的,模拟自动化的时候也需要先对数据进行加密 1.各种语言实现 网上已经各种语言实现好的AES加密,可以点击查看:http://outofmemory.cn/ ...

  5. JavaServlet的文件上传和下载

    关于JSP中的文件上传和下载操作 先分析一下上传文件的流程 1-先通过前段页面中的选择文件选择要上传的图片 index.jsp <%@ page language="java" ...

  6. Redis开机自启动

    1.新建redis文件 vi /etc/init.d/redis 2.修改/tec/init.d/redis文件,要修改Redis安装目录及配置文件路径 EXEC=/usr/local/redis/b ...

  7. less中使用calc

    css3中可以使用calc()来实现自适应布局 例如:width:“calc(100%  - 25px)” width: calc(expression); ==> expression是一个表 ...

  8. 【Python】xml 解析

    1. XML:指可扩展标记语言,是一种标记语言,用于存储数据和传输数据,但没有像HTML那样具有预定义标签,需要程序猿自定义标签 2. XML的解析:读取XML数据结构中的某些信息,比如读取书的属性 ...

  9. [转]Introduction to Learning to Trade with Reinforcement Learning

    Introduction to Learning to Trade with Reinforcement Learning http://www.wildml.com/2018/02/introduc ...

  10. 移动APP漏洞趋势

    个人总结,可能片面或不正确 样本来自WooYun网站,截止15年12月19号,一共75650个漏洞: 一.Top10安全漏洞中,sql注入占1/3:可见如果你是sql注入方面的测试专家,web安全1/ ...