按照惯例先吟诗一首:
《宫词·故国三千里》–张祜
故国三千里,深宫二十年。
一声何满子,双泪落君前。
if name == “main“:是干嘛的?
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 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解析器读取一个源文件时,它会执行所有的代码.在执行代码前,会定义一些特殊的变量.例如,如果解析器运行的模块(源文件)作为主程序,它将会把name变量设置成”main“.如果只是引入其他的模块,name变量将会设置成模块的名字.
假设下面是你的脚本,让我们作为主程序来执行:
1
| python threading_example.py
|
当设置完特殊变量,它就会执行import语句并且加载这些模块.当遇到def代码段的时候,它就会创建一个函数对象并创建一个名叫myfunction变量指向函数对象.接下来会读取if语句并检查name是不是等于”main“,如果是的话他就会执行这个代码段.
这么做的原因是有时你需要你写的模块既可以直接的执行,还可以被当做模块导入到其他模块中去.通过检查是不是主函数,可以让你的代码只在它作为主程序运行时执行,而当其他人调用你的模块中的函数的时候不必执行.
最后更新时间:
这里可以写作者留言,标签和 hexo 中所有变量及辅助函数等均可调用,示例:
http://suxianglun.github.io/2017/08/16/name==main的作用/