#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(支付宝)