Python中的__name__ == '__main__'
本篇來自http://stackoverflow.com/questions/419163/what-does-if-name-main-do
有時會在python script裡看到:
if __name__ == '__main__':
something else...
看起來有點像C/C++的main(),但為什麼要這樣寫呢?理由其實跟Python的執行方式有關。
Python是一個腳本語言,所以不像其他語言從main()開始執行,Python interpreter的執行方式很直接: 直接執行所有縮排為零(indentation level = 0)的程式碼。這固然很方便,但在多個.py檔案互相引用的時候會變得很麻煩: 別的.py檔裡面可能含有一些你不想要執行,但別人需要的零縮排程式碼,這時該如何調解?
幸好,Python有個內建變數__name__,當直接執行.py檔時(ex: python mypython.py),該module的__name__會被設置為__main__,而被引用進來的module(ex: import something),其__name__會被設置為其他值。如果我們可以將每個python檔的零縮排部分都寫成:
if __name__ == '__main__':
該部分便只會在直接python .py檔的時候執行。換言之,這有點像是python中的main()函數,不過執行上更加靈活具彈性。
留言
張貼留言