if __ name__ ==”__main__”的作用

举报
yd_267780927 发表于 2022/11/07 21:42:05 2022/11/07
【摘要】 if __ name__ ==”__main__”的作用  if __ name__ ==”__main__” 在不同的场景下应用不同:常见用法是用于区分脚本和模块。    如果当前文件里写了这句判断,在当前文件运行时,该条件成立;而该文件被当作模块导入到其他文件时,此条件则不成立了。此时__name__ 等于模块名。所以用这条语句很好的限制了文件被当作模块来进行使用。另外,这条语句的下划线...
if __ name__ ==”__main__”的作用
  if __ name__ ==__main__ 在不同的场景下应用不同:
常见用法是用于区分脚本和模块。
    如果当前文件里写了这句判断,在当前文件运行时,该条件成立;而该文件被当作模块导入到其他文件时,此条件则不成立了。此时__name__ 等于模块名。所以用这条语句很好的限制了文件被当作模块来进行使用。另外,这条语句的下划线是双下划线,并且所有标点符号是英文下的标点符号。

另一用法是在线程进程中使用,使用该语句,是表示一个程序主入口的象征。
    它是线程进程里的一个习惯写法,在进程里必须要使用这条语句开启主程序,否则运行会报错。
这是 Windows 上多进程的实现问题。在 Windows 上,子进程会自动 import 启动它的这个文件,而在 import 的时候是会执行这些语句的。如果你这么写的话就会无限递归创建子进程报错。但是在multiprocessing.Process的源码中是对子进程再次产生子进程是做了限制的,是不允许的,于是出现如上的错误提示。所以必须把创建子进程的部分用那个 if 判断保护起来,import 的时候 name 不是 main ,就不会递归运行了。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。