• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
宋宋974509823
博客园    首页    新随笔    联系   管理    订阅  订阅

if __name__ == '__main__' 这段代码怎么理解???

__name__是内置变量,可用于表示当前模块的名字,而“__main__”等于当前执行文件的名称。 两个名称搞不清没关系,往下看待会解释

 

对很多编程语言来说,程序都需要一个入口,例如C系列、Java,都需要有一个main函数作为程序的入口,而python作为脚本语言则不一样,从第一行就开始执行,并没有统一的入口。

一个python的文件有两种使用的方法,第一是直接作为脚本直接执行,第二是import到其他的python脚本中作为模块被调用执行。但是在被当作模块导入的时候总有一部分代码是不希望被运行的,而   if __name__ == '__main__' :  的作用就是控制两种情况下代码的运行。   

print(__name__)

print("this is song ")
if __name__=='__main__':
    print("this is songsong ")

此时   if __name__=='__main__':   之前的语句被执行,之后的语句也被执行

 

第二种情况被导入其他文件调用

from practice import b

小提示:此处导入了第一个文件,所以会执行第一个文件的代码,不要问为什么第二个文件没代码

此时  if __name__=='__main__':   之前的语句被执行,之后的语句没有被执行

小结:文件直接运行时,if __name__=='__main__':之后的语句会被执行;当文件被当作模块导入到其他文件时,if __name__=='__main__':之后的语句不会被执行

 

此时回到第一行,开始解释!

上述两个文件第一个  print(__name__)  结果为__main__,第二个print(__name__)结果为practice.b

__main__无论何时都是表示当前执行文件的名字,而__name__表示当前模块的名字

如果没有引用模块直接执行文件,__name__就等于__main__;如果导入了模块,__name__就等于模块名(例如:practice.b)

 

新手上路,多谢指教!

 

posted @ 2018-09-01 17:12  宋宋974509823  阅读(773)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3