问题

如果__name__ =="__main __":会做什么?

# Threading example
import time, thread

def myfunction(string, sleeptime, lock, *args):
    while 1:
        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解释器将该模块(源文件)作为主程序运行,则它将特殊的 __ name __ 变量设置为"__ main __".如果正在从另一个模块导入此文件,则 __ name __ 将设置为模块的名称.

在你的脚本的情况下,让我们假设它作为主函数执行,例如.你说的像

python threading_example.py

在命令行.设置特殊变量后,它将执行 import 语句并加载这些模块.然后它将评估 def 块,创建一个函数对象并创建一个指向函数对象的 myfunction 变量.然后它将读取 if 语句,并看到 __ name __ 等于"__ main __",因此它将执行此处显示的块. >

这样做的一个原因是,有时你写一个模块(一个 .py 文件),它可以直接执行.或者,它也可以导入并在另一个模块中使用.通过执行主检查,您可以让代码只在您希望作为程序运行模块时执行,而当有人只是想导入您的模块并自己调用您的函数时,不执行该代码.

有关其他详细信息,请参见此页.




相关问题推荐