Python中if __name__ == '__main__' 的解析

在很多Python代码中,在代码的最下方会看到  if __name__ == '__main__':,这段代码到底有什么用呢?

在理解这个语句的作用前,需要知道的是,一般的Python文件后缀为.py,其可以拿来执行,也可以用来作为模块使用import导入。当Python解析器读取一个源文件时它会执行所有的代码。在执行代码前会定义一些特殊的变量。如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成”__main__”。如果只是引入其他的模块,__name__变量将会设置成模块的名字,模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。

在代码下方添加  if __name__ == '__main__':  的主要原因是有时你需要你写的模块既可以直接的执行,还可以被当做模块导入到其他模块中去.通过检查是不是主函数,可以让你的代码只在它作为主程序运行时执行,而当其他人调用你的模块中的函数的时候不必执行。

简单来说就是,方便我们代码复用,也可以测试模块。

举例说明:

创建一个using_name.py

 

#!/usr/bin/env python

# -*- coding:utf-8 -*-

 

print(__name__)

 

直接执行输出:

python using_name.py

__main__    #变成__main__

导入模块后:

 

(py3) smallmars:day6 hexin$ python

Python 3.5.3 (default, Apr 23 2017, 10:52:19)

[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import using_name

using_name      #变成模块名字

>>> 

 

 

修改using_name.py

if __name__ == '__main__':

    print('run  itself')

else:

    print('imported from another module')

 

直接执行输出

python using_name.py

run  itself

导入模块方式

 

(py3) smallmars:day6 hexin$ python

Python 3.5.3 (default, Apr 23 2017, 10:52:19)

[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import using_name

imported from another module    #执行else内容

>>> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值