首页 > 编程语言 >python中的__name__变量

python中的__name__变量

时间:2023-03-03 11:45:47浏览次数:51  
标签:__ myFunction name 10 python main 脚本

一、__name__

1.1 这个 __name__ 拿来做什么的?

__name__是一个特别的变量,当我们与模块交互时使用,可以让我们区分哪些模块(常指:包和库)导入或者不导入。

1.2 这个 __name__ 变量可能取什么值?

当你执行一段脚本时,这段脚本的默认__name__被赋值为字符串‘__main__’,当这段脚本被导入程序时,__name__被赋值为脚本的文件名。if条件判断为false,就不会继续执行被导入脚本接下来的代码,故if __name__ == '__main__'具有阻止程序自动执行的作用

二、Module

模块是一个独立的代码片段,逻辑上与其他的代码段分开,可以进行复用。模块可以是库文件,函数,类以及Python文件。

 三、Demo(新建两个.py文件,一个是my_script.py,一个是import_my_scrip.py)

3.1 验证脚本默认赋值__name__为__main__

 1 # -*- coding: utf-8 -*-
 2 """
 3 @Time : 2023/3/3 10:14
 4 @Auth : T
 5 @File :nameScript.py
 6 @IDE :PyCharm
 7 """
 8 
 9 
10 # 情况一:直接运行脚本
11 def main():
12     myFunction()    # 调用myfunction函数
13 
14 
15 def myFunction():
16     print("变量__name__=", __name__)  # 输出结果:变量__name__= __main__
17 
18 
19 if __name__ == "__main__":
20     main()

流程:

3.3 验证当复用其他脚本文件时__name__的值

 1 # -*- coding: utf-8 -*-
 2 """
 3 @Time : 2023/3/3 10:13
 4 @Auth : T
 5 @File :importingScript.py
 6 @IDE :PyCharm
 7 """
 8 
 9 # 情况二:从外部脚本重用myFunction函数
10 from nameScript import myFunction
11 
12 if __name__ == "__main__":
13     print("变量__name__=", __name__)  # 变量__name__= __main__
14     myFunction()  # 变量__name__= nameScript

流程:

3.2 验证__name__是否有阻止程序自动执行作用

第一种情况:被调用脚本没有if __name__ == "__main__"

 1 # -*- coding: utf-8 -*-
 2 """
 3 @Time : 2023/3/3 10:14
 4 @Auth : T
 5 @File :nameScript.py
 6 @IDE :PyCharm
 7 """
 8 
 9 
10 # 情况一:脚本如果没有if __name__ == "__main__":
11 def main():
12     print("变量__name__2=", __name__)
13     myFunction()    # 调用myFunction函数
14 
15 
16 def myFunction():
17     print("变量__name__1=", __name__)  # 输出结果:变量__name__= __main__
18 
19 
20 # if __name__ == "__main__":
21 main()
# -*- coding: utf-8 -*-
"""
@Time : 2023/3/3 10:13
@Auth : T
@File :importingScript.py
@IDE :PyCharm
"""

# 情况二:外部脚本如果没有if __name__ == "__main__":
from nameScript import myFunction

if __name__ == "__main__":
    myFunction()    # 会一直执行nameScript中的代码,首先调用函数main(),然后输出一个结果,接着调用main()中的myFunction,输出一个结果,再最后调用myfunction函数,共三次结果

输出结果:

 

第二种情况:被调用脚本有if __name__ == "__main__"

 1 # -*- coding: utf-8 -*-
 2 """
 3 @Time : 2023/3/3 10:14
 4 @Auth : T
 5 @File :nameScript.py
 6 @IDE :PyCharm
 7 """
 8 
 9 
10 # 情况二:脚本如果有if __name__ == "__main__":
11 def main():
12     print("变量__name__2=", __name__)
13     myFunction()    # 调用myFunction函数
14 
15 
16 def myFunction():
17     print("变量__name__1=", __name__)  # 输出结果:变量__name__= __main__
18 
19 
20 if __name__ == "__main__":
21     main()
 1 # -*- coding: utf-8 -*-
 2 """
 3 @Time : 2023/3/3 10:13
 4 @Auth : T
 5 @File :importingScript.py
 6 @IDE :PyCharm
 7 """
 8 
 9 # 情况二:外部脚本如果有if __name__ == "__main__":
10 from nameScript import myFunction
11 
12 if __name__ == "__main__":    # 外部脚本如果有if __name__ == "__main__":
13     myFunction()    # 会一直执行nameScript中的代码,if __name__ == "__main__"判断为false,不调用main()函数中的输出语句,只调用myFunction()函数,输出一个结果

输出结果:

 四、参考资料

https://www.bilibili.com/video/BV1te4y1M7yx/?spm_id_from=333.337.search-card.all.click&vd_source=fe50c2f7a31ca9a6be02641333f63067

https://zhuanlan.zhihu.com/p/57309137

https://www.freecodecamp.org/news/whats-in-a-python-s-name-506262fe61e8

 

标签:__,myFunction,name,10,python,main,脚本
From: https://www.cnblogs.com/tqqnb/p/17175011.html

相关文章

  • Pandas read_csv:low_memory 和 dtype 选项
    df=pd.read_csv('somefile.csv')...给出错误:.../site-packages/pandas/io/parsers.py:1130:DtypeWarning:列(4,5,7,16)具有混合类型。在导入时指定dtype......
  • 在 SQL Server 中应该选择 MONEY 还是 DECIMAL(x,y) 数据类型?
    money我很好奇数据类型和类似的东西之间是否存在真正的区别decimal(19,4)(我相信这是金钱在内部使用的东西)。我知道这money是特定于SQLServer的。我想知道是否有令......
  • 什么是云数据库?小白快速理解
    云原生数据库:是指通过云平台进行构建、部署、交付和自动运维的数据库服务。该服务通过是已DBass(Databaseasaservice)的形态,将数据库架构和实现细节隐藏起来,采用多租户和......
  • 与时俱进推动智慧城市建设,智慧管网监测加强城市治理能力
        近年来,智慧城市相关理念认知不断深化、智慧城市实践不断丰富,对于智慧城市新的标准化需求也不断涌现。坚持人民城市人民建、人民城市为人民,提高城市规划、建设、......
  • python初始化类出现takes no arguments
    初始化类的时候出现了takesnoarguments一般这种问题都是因为初始化函数的问题,例如definit(self):defint(self,name):definit_(self,name):def__init(self,name......
  • 车联网安全学习之TBOX
    车联网安全学习之TBOX转载自:https://delikely.github.io/2021/08/15/TBOX-Main-Function/TelematicsBOX,简称T-BOX,也称远程信息处理控制单元(TelematicsControlUnit,......
  • Dockercompose conda 切换环境
    FROMcontinuumio/miniconda3:4.11.0#要创建的conda环境名ARGconda_env=XXXXX#将conda环境bin加入PATHENVPATH/opt/conda/bin:$PATH#一个RUN是一个shell环境,......
  • JetBrains系列(IDEA,Clion等) 自定义注释设置
    为了方便对方法的功能描述,可以设置自定义注释模板。效果:/***@FunctionNamecalculatePrice*@CreateTime2023/3/311:01*@Authorthink*TODO*/模板:可以......
  • pdf.js 预览时红章、电子签和部分文字无法显示问题解决方案
    pdf红章无法预览的问题修复方案:node_modules/pdfjs-dist/es5/build/pdf.worker.js注释一行代码:this.setFlags(_util.AnnotationFlag.HIDDEN)pdf电子签、部分文字不......
  • 实验1
    实验任务1代码1#include<stdio.h>2intmain()3{4printf("oo\n");5printf("<H><H>\n");6printf("IIII\n");78return0;......