其他人都已經回答了,但我想我還有其他東西要補充。
原因有if
聲明,呼籲main()
(排名不分先後):
其他語言(如C和Java)有main()
功能執行程序時調用。使用這個if
,我們可以讓Python像他們一樣行事,這讓很多人感到更加熟悉。
代碼將是清潔器,更易於閱讀和更好的組織。 (是的,我知道這是主觀的)
這將是可能的import
python代碼作爲模塊沒有討厭的副作用。
內def main
變量是當地,而外面是全球。這可能會引入一些錯誤和意外行爲。
但是,你不需要寫main()
功能,並把它稱爲if
語句中。
我自己通常開始寫沒有任何功能的小型一次性腳本。如果腳本變得足夠大,或者如果我覺得把所有的代碼放在一個函數中會使我受益,那麼我會重構代碼並執行它。當我編寫bash
腳本時,也會發生這種情況。
即使您將代碼放在主函數中,也不需要像這樣寫。一個整潔的變化可能是:
import sys
def main(argv):
# My code here
pass
if __name__ == "__main__":
main(sys.argv)
這意味着你可以調用其他腳本(或交互shell)將自定義參數main()
。這可能對單元測試或批處理有用。但請記住,上面的代碼需要解析argv,因此可能最好使用不同的調用來傳遞已解析的參數。
在我寫了一個面向對象的應用程序,代碼是這樣的:
class MyApplication(something):
# My code here
if __name__ == "__main__":
app = MyApplication()
app.run()
所以,請隨時到更適合寫的代碼你。 :)
請參閱http://stackoverflow.com/questions/419163/what-does-if-name-main-do – gimel 2010-10-28 08:57:47
stackoverflow.com/questions/419163/what-does-if-name-main-do does不回答整個問題。 – Johnsyweb 2010-10-28 09:09:09
假定的重複沒有回答:有一個main()函數(而不是僅將所有代碼寫入「if __name__」塊)非常有用,因爲它避免了意外創建可能影響其他函數的全局變量。 – slowdog 2010-10-29 17:05:40