python中 __name__及__main()__的妙處

http://www.cnblogs.com/liqilei/archive/2010/08/11/1797715.html

python中 __name__及__main()__的妙處

複製代碼
#hello.py
def sayHello():
str
="hello"
print(str);

if __name__ == "__main__":
print ('This is main of module "hello.py"')
sayHello()
複製代碼

python作爲一種腳本語言,我們用python寫的各個module都可以包含以上那麼一個累死c中的main函數,只不過python中的這種__main__與c中有一些區別,主要體現在:

1、當單獨執行該module時,比如單獨執行以上hello.py: python hello.py,則輸出

    

This is main of module "hello.py"
hello

 

 

 

    可以理解爲"if __name__=="__main__":" 這一句與c中的main()函數所表述的是一致的,即作爲入口;

2、當該module被其它module 引入使用時,其中的"if __name__=="__main__":"所表示的Block不會被執行,這是因爲此時module被其它module引用時,其__name__的值將發生變化,__name__的值將會是module的名字。比如在python shell中import hello後,查看hello.__name__:

>>> import hello
>>> hello.__name__
'hello'
>>>

3、因此,在python中,當一個module作爲整體被執行時,moduel.__name__的值將是"__main__";而當一個module被其它module引用時,module.__name__將是module自己的名字,當然一個module被其它module引用時,其本身並不需要一個可執行的入口main了。可以說python中的這種用法很靈活啊。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章