Skip to content

Latest commit

 

History

History
40 lines (25 loc) · 2.02 KB

304.md

File metadata and controls

40 lines (25 loc) · 2.02 KB

#if __name__ == "__main__"是做什么用的?

原问题地址:http://stackoverflow.com/questions/419163/what-does-if-name-main-do

##问题:

if __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中所能找到的所有代码。在执行代码之前,它将定义一些特殊变量。例如,如果Python解释器把这个模块(源文件)作为主程序来运行,它就把特殊变量__name__的值设置为__main__。如果这个文件从另一个模块被引入,__name__将被设置为模块的名字。

至于你的脚本,让我们假设它正在执行主函数,例如,你在命令行键入下面的内容

python threading_example.py

设置了特定的变量后,Python将执行import语句并加载这些模块。然后,执行def语句块,创建一个函数对象并实现myfunction这个名称指向函数对象。接着,它会读取if语句,并确保__name__等于__main__,之后,它将执行所显示的语句块。

这样做的原因之一是:有时候你把一个模块(.py文件)写在可以直接被执行的地方。另外,这个模块也可以被引入,并在另一个模块中被使用。经过__main__检查,你可以让代码只有在你想把该模块作为程序来运行的时候才被执行,而不是在有人只想引用模块并调用你的函数时被执行。

你可以访问这个页面来了解一些额外的细节,this page


打赏帐号:qiwsir@126.com(支付宝)