if ___name__ == '__mail__'

if ___name__ == '__mail__'

在这个回答中:https://class.imooc.com/course/qadetail/105558 ,有些地方我还是不明白:

这里的 __name__ 是一个什么变量?是固定只能叫这个名字还是随便写的? '__main__' 这个字符串又是哪里来的?起什么作用?

我大概明白上面链接里老师的回答里关于 if ___name__ == '__mail__' 的作用了,但是完全不明白这里的原理和机制,就是只知其然不知其所以然,能否详细说一下。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
cobain46 2019-05-17 10:03:37

__name__是内置变量

  1. 当python文件是个模块的时候, __name__是模块名

  2. 当你右键运行某python文件时, 该文件的__name__被赋值为 __main__,是整个程序的入口文件

p.s   你自己建个模块,然后在主文件里引用模块,分别在两个文件内print(__name__)就会很清晰了


慕猿梦 2019-05-16 18:38:33

同学,您好,if ___name__ == '__main__':是python解释器内部封装好的,__name__是个属性,在自身的py文件中python解释器赋予了__name__=='__main__'字符串。

http://img1.sycdn.imooc.com//climg/5cdd3d1b00010a6903900192.jpg

在调用的时候__name__为模块名字,所以调用的时候不会执行被调用的模块中的if ___name__ == '__main__':下的代码。

http://img1.sycdn.imooc.com//climg/5cdd3d9a000162e903800245.jpg

如果我的回答解决了您的疑惑,望采纳!!^_^ 祝学习愉快~~~~~

  • 请问一下老师,只要运行当前的这个.py文件,会默认__name__ 是__main__,那为什么还要写这个判断语句呢(#if __name__ == '__main__':)?
    2019-05-19 18:34:56
  • 慕猿梦 回复 马克龚 #2
    同学,你好,写上if __name__ == '__main__':语句,在调用该文件的时候,不会去执行if __name__ == '__main__':中的函数,if __name__ == '__main__':测试该文件是否能正常运行,当调用py文件时,需要使用if __name__ == '__main__':测试下文件是否正常运行,然后在另一个py文件中调用。
    2019-05-20 11:00:52
  • 马克龚 回复 慕猿梦 #3
    能举个例子解释吗?没太听懂呀,老师
    2019-05-20 14:08:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师