python中的python,python的笔记
1.简介在Python相关代码中,我们经常会遇到以下代码段:
#东西
if __name__==__main__ :
# do stuff本文会用尽可能简单的例子来解释这里发生了什么,以及if __name__==__main__ 请注意,上面的代码中name和main前后有2个下划线字符。
废话少说,我们开始吧!
2.特殊变量当我们正常运行我们的Python脚本时,这个脚本中变量__name__的值一般是__main__。让我们看一个例子:
# first.py
Print(__name__)我们在终端中运行上面的脚本,代码如下:
Python first.py输出如下:
__main__观察上面的输出。当我们运行脚本first.py时,变量__name__的值被设置为__main__。
3.复杂的例子上面的例子比较简单,容易理解。接下来,我们以多个文件为例。这里假设我们有三个脚本,分别是a.py,b.py,c.py。
其中,a.py的内容如下:
# a.py
打印( __name__ in a.py:,__name__)
从b进口*
从import *至此,b.py的内容如下:
# b.py
print (_ _ name _ _ in b.py:,_ _ name _ _) c.py的内容如下:
#副本
Print (_ _ name _ _ in c.py:,_ _ name _ _)如果我们运行命令python a.py,我们会得到以下结果:
__name__ in a.py: __main__
b.py: b中的__name__。
c.py中的__name__注意,在脚本a.py中,我们看到__name__的值是__main__。此时脚本b.py中__name__的值是B,c.py中__name__的值是c,这是因为我们运行的脚本是a.py,所以脚本a.py中变量__name__的值会被设置为字符串__main__。
另外,脚本b.py和c.py中的变量_ _ name _ _分别保存为b和c,因为脚本b.py和c.py不是直接运行的脚本。而是我们运行的脚本a.py调用b.py和c.py中的打印函数。
如果我们单独运行python b.py,我们会得到以下结果:
b.py中的_ _ name _ _:_ _ main _ _相应地,我们运行python c.py,得到如下结果:
c.py中的_ _ name _ _:_ _ main _ _观察上面两个输出。当我们直接运行脚本b.py或者c.py时,相应脚本中的变量__name__会被设置为__main__。
4.使用场景作为Python开发者,我们通常在一个项目中创建多个Python文件,而不是在一个Python文件中编写所有代码。所以我们通常会有一个主Python文件作为项目的入口,其他文件包含一些辅助的功能实现。
让我们看一个例子。假设我们有两个Python文件,如下所示:
#主页. py
从帮助程序导入*
print(greet(bob ))辅助函数如下实现helper.py:
# helper.py
定义问候语(姓名):
返回“你好”名称
Print(greet(testname ))如果我们此时运行命令python main.py,我们会得到以下结果:
你好鲍勃
测试名上面的import语句将引入helper.py中的所有语句,所以helper.py中的测试语句print(greet(testname ))也将被执行。虽然我们可以通过添加注释或者屏蔽注释运行main.py或者helper.py来控制测试语句的输出,但是这种情况是语句。
if __name__==__main__ 大显身手的一种情况。
5.解决方案针对以上情况,我们做如下代码整改:
#主页. py
从帮助程序导入*
Print(greet(bob ))我们将文件helper.py修改如下:
定义问候语(姓名):
返回“你好”名称
if __name__==__main__ :
Print(greet(testname ))此时,我们执行命令python main.py并获得以下结果:
你好bob,注意此时helper.py
中变量__name__的值是helper,所以helper.py中的if语句无效,我们的测试语句print(greet(testname ))`。
此时,如果我们单独运行命令python helper.py,我们会得到以下结果:
当HelloName单独运行helper.py时,脚本中的变量__name__会被设置为__main__,因此会执行测试语句并输出相应的测试结果。
6.总结本文针对Python中常见的if _ _ name _ _= _ _ main _ _ ,重点分析其原理和应用场景。
你丢了学业吗?
关注微信官方账号《AI算法之道》了解更多关于AI算法的信息。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。