2012-08-02 71 views
6

你可以經常看到這個(變化的):爲什麼main()函數沒有在if'__main__'中定義?

def main(): 
    do_something() 
    do_sth_else() 

if __name__ == '__main__': 
    main() 

而且我現在知道爲什麼這個(方案B):

if __name__ == '__main__': 
    do_something() 
    do_sth_else() 

或者至少這個(變體C ):

if __name__ == '__main__': 
    def main(): 
     do_something() 
     do_sth_else() 

    main() 

當然函數調用內部main()可能不是函數調用,它們僅代表您可能想要在您的main()函數中執行的任何操作。

那麼爲什麼人們更喜歡變異a而不是其他呢?這只是風格/感覺還是有一些真正的原因?如果可能的話,請鏈接資源。

回答

11

爲什麼只限制您的main()函數僅用於命令行使用?

通過在模塊範圍內定義main()函數,您現在可以包裝腳本並更改其調用方式。也許你想在sys.argv中設置默認參數,也許你想在另一個腳本中重新使用代碼。

4

這是因爲有兩種使用Python腳本的方式。一個從命令行導入,另一個從另一個腳本導入。當你從命令行運行它時,你想運行main()函數,當你導入它時,你可能不想運行main()函數直到你需要它(你只想導入main())。

相關問題