目录
- 一.简介
- 1.__name__
- 2.’__main__’
- 3.__name__ == ‘__main__‘
- 二.作用
- 三.猜你喜欢
零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门
学习过 C 语言或者 Java 语言的盆友应该都知道程序运行必然有主程序入口 main 函数,而 Python 却不同,即便没有主程序入口,程序一样可以自上而下对代码块依次运行,然后 Python 不少开源项目或者模块中依然存在 __name__ == “__main__” 这种写法,具体是上面意思呢?
一.简介
1.__name__
** __name__** 是 Python 的内置属性,是系统全局变量!每一个 py 文件都有一个属于自己的__name__:
** 如果 py 文件作为模块被导入(import),那么 __name__ 就是该 py 文件的文件名(也称 模块名);**
** 如果 py 文件直接运行时(Ctrl+Shift+F10),那么 __name__ 默认等于字符串”__main__”;**
举个简单的例子:假如你名字是张三
在朋友眼中,你是张三(__name__ == \'张三\');
在你自己眼中,你是你自己(__name__ == \'__main__\')
2.’__main__’
‘_ _main_ _’ 实际上就是一个字符串,用来鉴别程序入口,没有太多花里胡哨的东西.
3.__name__ == ‘__main__‘****
当 .py 文件被直接运行 (Ctrl+Shift+F10) 时,** if __name__ == ‘__main__’ 之下的代码块将被运行,该语句就相当与 Python 的 main 主函数入口**,示例代码如下:
a.新建一个 my_name.py 文件,作为模块文件:
# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python __name__ == ‘__main__’.py
@Time:2021/04/24 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\"\"\"
# 定义一个函数并打印 __name__
def prit_name():
print(\"my_name.py __name__:\", __name__)
if __name__ == \"__main__\":
prit_name()
b.新建一个 python_main.py 文件,作为启动文件 (Ctrl+Shift+F10):
# !usr/bin/env python
# -*- coding:utf-8 _*-
\"\"\"
@Author:猿说编程
@Blog(个人博客地址): www.codersrc.com
@File:Python __name__ == ‘__main__’.py
@Time:2021/04/24 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
\"\"\"
# 导入 my_name 模块
import my_name
# 定义一个函数并打印 __name__
def prit_name():
my_name.prit_name()
print(\"python_main.py __name__:\", __name__)
if __name__ == \"__main__\":
prit_name()
\'\'\'
输出结果:
my_name.py __name__: my_name
python_main.py __name__: __main__
\'\'\'
**由此可见,作为启动文件 python_main.py ,该文件的内置属性 __name** 等于 ‘__main__’,而 my_name.py 作为导入模块,该模块的 __name** 等于文件名(也称模块名字),所以 my_name.py 中的 表达式 if __name__ == ‘__main__’ 并不成立!**
当直接将 my_name.py 作为启动文件时 (Ctrl+Shift+F10),输出:
my_name.py __name__: __main__
总结
如果 py 文件作为模块被导入(import),那么 __name__ 就是该 py 文件的文件名(也称 模块名);
如果 py 文件直接运行时(Ctrl+Shift+F10),那么 __name__ 默认等于字符串 ‘__main__‘** ;**
二.作用
1.__name__ == ‘__main__‘ 作为启动 py 文件的 main 函数入口;
2.一个项目中必然会包含多个模块文件,每个模块文件在自己写完代码之后会做一些简单的测试用于检测 bug 或者 对自己的函数调用写一个简单的示例,而恰到好处的是:__name__ == ‘__main__‘ 既不会影响你的测试代码,也不会影响别人调用你的接口函数;
三.猜你喜欢
未经允许不得转载:猿说编程 » Python __name__ == ‘__main__’详细解释
本文由博客 - 猿说编程 猿说编程 发布!
来源:https://www.cnblogs.com/shuopython/p/14873860.html
图文来源于网络,如有侵权请联系删除。