目录
Python中if__name__==‘__main__‘作用补充:if__name__=="__main__":的运行原理总结Python中if __name__ == ‘__main__‘作用
要搞清楚这个问题,要知道以py作为后缀的Python代码文件,有两种使用方式,第一种方式是直接运行,另一种方式是作为模块被别的py文件导入。
当采用第一种方式直接运行自身时,__name__的值为__main__;
当采用第二种方式被别的模块导入时,其__name__的值为其文件名(通常也称为模块名);
举例实测如下:
用PyCharm新建一个Python工程后,新建两个py文件,文件名分别为AAA.py和BBB.py
然后在AAA.py中写上如下代码:
print("当前AAA.py中__name__的值为:", __name__)
在BBB.py中写上如下代码:
import AAA
然后分别运行这两个Python文件,结果如下:
运行AAA.py的结果如下:
运行BBB.py的结果如下:
这个示例除了应证了上面说的py文件的两种使用方式,还表明使用import导入py文件/模块时,这个被导入的py文件中没有缩进的代码会被全部执行一遍。
这样就带来了一个问题,如果我在导入模块AAA.py时如果有想代码不想被执行,那么该怎么做呢?语句“if __name__ == ‘__main__’”就能实现这个作用,具体怎么用,有朋友看了上面的例子应该已经明白了,如果还不明白,请看下面这个例子:
修改上面的AAA.py的代码为如下代码:
print("\n") print("当前AAA.py中__name__的值为“{}”".format(__name__)) if __name__ == "__main__": print("\n") print("当前运行的文件是AAA.py") else: print("\n") print("当前AAA.py是作为模块被其它py文件导入")
再次分别运行AAA.py和BBB.py,结果分别如下:
可见通过语句“if __name__ == ‘__main__’,就能判断出一个py文件是直接运行还是作为模块文件被别的py文件导入的,进而通过这个判断实现一些代码的不被执行。
那么通常来说哪些代码不希望被执行呢?当文件被作者定义为一个模块时,里面难免含有一些测试代码,当模块被import时,这些代码是不希望被执行的。
补充:if __name__ == "__main__":的运行原理
每个python模块(python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 __name__,当该模块被直接执行的时候,__name__ 等于文件名(包含后缀 .py );如果该模块import到其他模块中,则该模块的 __name__ 等于模块名称(不包含后缀.py)。
而“__main__” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,__name__ == "main" 结果为真。
为了进一步说明,我们在 test.py 脚本的 if __name__=="__main__": 之前加入 print(__name__),即将 __name__ 打印出来。文件内容和结果如下:
可以看出,此时变量__name__的值为"__main__"。
再执行 import_test.py,执行结果如下:
此时,test.py中的__name__变量值为 test,不满足 __name__=="__main__" 的条件,因此,无法执行其后的代码。
总结
到此这篇关于Python代码中if __name__ == ‘__main__‘的作用是什么的文章就介绍到这了,更多相关Python中if __name__ == ‘__main__‘作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?