前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >__name__ == "__main_

__name__ == "__main_

作者头像
py3study
发布2020-01-19 15:51:55
5780
发布2020-01-19 15:51:55
举报
文章被收录于专栏:python3

问题: __name__ == "__main__" 的作用是什么?

代码语言:javascript
复制
# Threading example
import time, thread

def myfunction(string, sleeptime, lock, *args):
    while True:
        lock.acquire()
        time.sleep(sleeptime)
        lock.release()
        time.sleep(sleeptime)

if __name__ == "__main__":
    lock = thread.allocate_lock()
    thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock))
    thread.start_new_thread(myfunction, ("Thread #: 2", 2, lock))

回答: 当 Python 编译器(Python interpreter)读取了源文件,它会执行其中的所有代码。

在执行代码之前,它会定义几个特殊变量。举例来说,如果 Python 编译器将那个模块(源文件)当作主程序来运行,那么它会将变量 __name__ 的值设为 "__main__"。如果这个源文件是从其他模块导入(import)的,变量 __name__ 会被设为模块名。

在你的案例中,让我们假设这是作为主函数来执行。例如,在命令行上输入 python threading_example.py。当设置完特殊变量,它会执行如下几个步骤:

  1. 执行 import 语句,加载模块;
  2. 评估 def 区域,创造一个函数对象以及一个指向它的变量 myfunction
  3. 读取 if 语句,看到 __name__"__main__" 相等,然后执行其中的代码。

这么做的原因在于,有时候你写了一个模块(.py文件),它既可以直接执行,又可以被引入到其他模块中执行。通过执行 main 检查,有两个好处:

  1. 当你想将该模块作为程序运行时才执行代码;
  2. 当某人只想导入模块并自行调用函数时,不会执行该代码。

该问答来源:

https://stackoverflow.com/questions/419163/what-does-if-name-main-do

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档