__name__怎么解释

胖子吴 2018-05-09 07:58:38
#test.py
#--encoding:gbk--
def HaveFun():
if __name__ == '__main__':
print('I am in my domain,my name is %s' % __name__)
else:
print('Someone else calls me!,my name is %s' % __name__)


HaveFun()
print(__name__)

#main.py
#--encoding:gbk--
print(__name__)
import test
print(__name__)
test.HaveFun()

#result:

__main__
Someone else calls me!,my name is test
test
__main__
Someone else calls me!,my name is test

能帮忙分析下程序执行过程及各个变量的环境,谢谢
...全文
831 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
2018-05-16
  • 打赏
  • 举报
回复
print(__name__)
#      此处__name___应该就是打印当前python的文件名,所以这里就打印了 __main__
#
print("*******************************zanting1***********************************")
import test
#   这段代码打印的内容如下:

#   Someone else calls me!,my name is test
#   test

#   所以猜测,当import test 的时候,就有点类似于把里面的代码拷贝过来.
#   所以test里面的HaveFun() 会打印第一行数据, Someone else calls me!,my name is test

#   随后,执行print(__name__) 这段
#   就会打印test,因为这段代码是在test的目录下,而不是在main目录下。

print("*******************************zanting2***********************************")
print(__name__)

#   打印当前的文件名,也就是main.
#   至于前后为什么加两个下划线,可能是pytho的特性吧。

print("*******************************zanting3***********************************")
test.HaveFun()

#   此处依然打印的是test,可能因为用test进行的调用,所以他依然认为自己的名字是test
#   而不是__main___
#   不知道有没有办法让他认为当前的文件名是main呢。
#   刚刚测试了下,如果不用test调用havaFun,程序会报错。

print("*******************************zanting4***********************************")

HavaFun()   #error

#
#       输出结果如下:
#

"""
D:\py\First\venv\Scripts\python.exe D:/py/First/venv/main.py
__main__
*******************************zanting1***********************************
Someone else calls me!,my name is test
test
*******************************zanting2***********************************
__main__
*******************************zanting3***********************************
Someone else calls me!,my name is test
*******************************zanting4***********************************

Process finished with exit code 0
"""
  • 打赏
  • 举报
回复
程序在哪个文件里面执行的print(__name__) name的结果就是那个文件名
PyTorch版的YOLOv5是轻量而高性能的实时目标检测方法。利用YOLOv5训练完自己的数据集后,如何向大众展示并提供落地的服务呢?   本课程将提供相应的解决方案,具体讲述如何使用Web应用程序框架Flask进行YOLOv5的Web应用部署。用户可通过客户端浏览器上传图片,经服务器处理后返回图片检测数据并在浏览器中绘制检测结果。   本课程的YOLOv5使用ultralytics/yolov5,在Ubuntu系统上做项目演示,并提供在Windows系统上的部署方式文档。 本项目采取前后端分离的系统架构和开发方式,减少前后端的耦合。课程包括:YOLOv5的安装、 Flask的安装、YOLOv5的检测API接口python代码、 Flask的服务程序的python代码、前端html代码、CSS代码、Javascript代码、系统部署演示、生产系统部署建议等。   本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793 Windows系统 https://edu.csdn.net/course/detail/30923 《YOLOv5(PyTorch)目标检测:原理与源码解析》https://edu.csdn.net/course/detail/31428 《YOLOv5(PyTorch)目标检测实战:Flask Web部署》https://edu.csdn.net/course/detail/31087 《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》https://edu.csdn.net/course/detail/32303

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧