码迷,mamicode.com
首页 > 编程语言 > 详细

python中if __name__ == '__main__':

时间:2017-07-11 23:30:38      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:ase   python   rom   run   ons   检查   com   文件   class   

Using a module‘s __name__

Example? 8.2.? Using a module‘s __name__

				
#!/usr/bin/python
# Filename: using_name.py

if __name__ == ‘__main__‘:
	print ‘This program is being run by itself‘
else:
	print ‘I am being imported from another module‘
				
				

Output

				
$ python using_name.py
This program is being run by itself

$ python
>>> import using_name
I am being imported from another module
>>>
				
				

How It Works

Every Python module has it‘s __name__ defined and if this is ‘__main__‘, it implies that the module is being run standalone by the user and we can do corresponding appropriate actions.

 

# 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))

还有*args在这里是什么意思?


当Python解析器读取一个源文件时,它会执行所有的代码.在执行代码前,会定义一些特殊的变量.例如,如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成"__main__".如果只是引入其他的模块,__name__变量将会设置成模块的名字.

假设下面是你的脚本,让我们作为主程序来执行:

python threading_example.py

当设置完特殊变量,它就会执行import语句并且加载这些模块.当遇到def代码段的时候,它就会创建一个函数对象并创建一个名叫myfunction变量指向函数对象.接下来会读取if语句并检查__name__是不是等于"__main__",如果是的话他就会执行这个代码段.

这么做的原因是有时你需要你写的模块既可以直接的执行,还可以被当做模块导入到其他模块中去.通过检查是不是主函数,可以让你的代码只在它作为主程序运行时执行,而当其他人调用你的模块中的函数的时候不必执行.

python中if __name__ == '__main__':

标签:ase   python   rom   run   ons   检查   com   文件   class   

原文地址:http://www.cnblogs.com/JZ-Ser/p/7152505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!