栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于Python 中 常见语句 if

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Python 中 常见语句 if

关于Python 中 常见语句 if__name__ == '__main__': 的理解
    • 一、Python中变量和方法中的双下划线
    • 二、Python脚本运行的两种方式,以及`__name__`在不同运行方式下的变化
    • 三、具体的实例分析

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

在学习别人共享的python代码时,经常会在脚本后面看到如下的代码块:

if__name__ == '__main__':

笔者在学习中也经常对此语句感到困惑,看完网上一些关于对这个语句解释的博文,也总是阅读完了不理解,反而变得更困惑。

下面说一下笔者对这个语句的通俗理解,希望对您的学习工作有所帮助。

一、Python中变量和方法中的双下划线

进行详细解释前,首先需要对这个语句中包含的__name__和__main__进行简单的介绍。

在python中,经常会见到带有双下滑线的变量和方法,如常见的:

  • __future__
  • __all__
  • __version__
  • __author__
  • __name__

其实这类方法被称为python的魔法函数,可以理解为python内的私有方法,我们不能通过外部调用对其属性进行修改。通俗理解就是:这里的__name__是python内置的方法,每个脚本都有,其实就是当前脚本的名称。

注意: 如果对这些混淆概念不太清楚,具体关于对象,类,方法,函数,属性的区别和理解,请看笔者博客:

  • 混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解
二、Python脚本运行的两种方式,以及__name__在不同运行方式下的变化

基于python编写的脚本运行方式有两种:

  • 直接运行
  • 被其他脚本调用

在不同的运行方式下,__name__也会随之发上变化,具体如下:

  • 当直接运行时:__name__==__main__
  • 当被其他脚本调用时: __name__==脚本名称

讲到这里,这个问题就显得很清楚了, 通俗的理解就是: 只有在脚本单独运行时,代码块 if__name__ == '__main__': 才会运行,当该脚本中的方法、类被其他脚本调用时,代码块 if__name__ == '__main__': 将会失效。

为了更清楚的理解,下面来看具体的实例分析。

三、具体的实例分析

下面给出具体的实例分析,静下心来把下面这个案例看懂,应该就彻底理解了这行代码的含义。

首先我们先在Test文件夹下定义两个python脚本文件,名称为:

  • demo1.py
  • demo2.py
    文件夹的具体结构如下,

    然后我们首先对demo1.py脚本文件进行分析,其内部代码如下:
print('__name__:',__name__)

print('hello, this is one!')

if __name__ == '__main__':
    print('hello, this is two!')
    print('running this part')

直接运行该脚本,具体运行结果如下:

从这里可以看到,当直接单独运行该脚本demo1.py时,它的名称为__main__,此时,该脚本中的函数print('__name__:',__name__)和print('hello, this is one!')在运行完成后,后面的代码块

if __name__ == '__main__':
    print('hello, this is two!')
    print('running this part')

的内部的方法, print('hello, this is two!')和 print('running this part')也参与了运行。

下面定义脚本demo2.py,具体代码如下:

import demo1

print('This is demo2.py')

当脚本demo1.py被脚本demo2.py调用时,运行结果如下:

可以看到:

  • 当在脚本demo2.py中调用脚本demo1.py时,它的名称由原来直接运行demo1.py时的 '__main__'变成了demo1,
  • 此时,脚本demo1.py中的代码if __name__ == '__main__':条件不成立,所以其后面的函数print('__name__:',__name__)和print('hello, this is one!')也将不会被执行。

总结:
脚本函数中的代码块if __name__ == '__main__':只有在直接运行该当前脚本时才会生效,而当被其他脚本调用时,这部分代码块失效。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号