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

python if

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

python if

参考文章:if name == ‘main’: 到底是个啥?
Python中“if name==‘main’:”详细解析

首先创建一个test1.py的文件

def f():
    print('函数内部')

print('test1程序入口')
print(__name__)
f()
print('test1结束')

前面是函数定义,下面是print语句加函数调用
执行这个程序,结果是:

我们可以发现在test1.py文件中之心的时候,__name__的值是__main__

那么如果加上这句if __name__ == '__main__',结果会不一样吗?

def f():
    print('函数内部')

if __name__=='__main__':
    print('test1程序入口')
    print(__name__)
    f()
    print('test1结束')

结果和之前没有任何区别

此时,我们在创建另一个文件test2.py,同时把当前的test1.py导入过去,

test1.py
def f():
    print('函数内部')
    
print('test1程序入口')
print(__name__)
f()
print('test1结束')
test2.py
import test1

print('test2程序入口')
print(__name__)
执行test2.py:


我们发现在test2.py文件中导入test1,运行代码的时候,把test1内的代码也执行了
其实在使用import的时候,python会把导入的模块一起执行。

Python解释器在导入模块时,会将模块中没有缩进的代码全部执行一遍(模块就是一个独立的Python文件)。开发人员通常会在模块下方增加一些测试代码,为了避免这些测试代码在模块被导入后执行,可以利用__name__属性。

如果我们只是想在test2中可以用test1内定义的函数或者类,并不想test1某些代码被执行,这里就可以添加上if __name__ == '__main__'

test1
def f():
    print('函数内部')

if __name__=='__main__':
    print('test1程序入口')
    print(__name__)
    f()
    print('test1结束')
test2
import test1

print('test2程序入口')
print(__name__)
执行test2


这时test1中的某些代码并没有执行,是因为在test2中点击执行时,test2中的__name__为__main__,test1作为被导入的模块,import时也会执行,但是它里面的__name__此时就是模块名称,即test1。
此时 if __name__ == '__main__'判断为False,所以下面的代码就不会执行了

所以:

当 .py 直接运行的时候
 __name__的值是__main__
而当 .py 被当作模块导入的时候
__name__的值是**模块**的名称

所以如果我们的文件需要被导入到其他模块中时,为了不让别人一导入就执行全部代码,所以使用if __name__ == '__main__'之后,其中的代码就不会被执行了

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

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

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