我想聽聽關於這個問題的看法:這是一個壞主意,有大量的代碼後Python的設計:代碼後,「如果__name__ == __main__」測試
if __name__ == '__main__':
我之所以我問的是,我目前的項目有大約400行代碼,隨着它的增長,我在上面的陳述之後不斷添加行。所以這個程序預計會有大約3000行代碼,我很擔心,在這個陳述之後我會有太多的代碼。所以這個問題'在這個陳述之後寫很多代碼是不是一種好的pythonic方法?'
我想聽聽關於這個問題的看法:這是一個壞主意,有大量的代碼後Python的設計:代碼後,「如果__name__ == __main__」測試
if __name__ == '__main__':
我之所以我問的是,我目前的項目有大約400行代碼,隨着它的增長,我在上面的陳述之後不斷添加行。所以這個程序預計會有大約3000行代碼,我很擔心,在這個陳述之後我會有太多的代碼。所以這個問題'在這個陳述之後寫很多代碼是不是一種好的pythonic方法?'
這聽起來像有兩個不同點,使這裏:
所有其他的事情都是平等的,這是爲了可讀性,可測試性,可維護性更好的(和「-Ability或許一些其他值「)來定義封裝由400行命令代碼表示的行爲的函數。通過__name__ == '__main__'
合格
代碼是只有當該文件被直接調用,而不是被包括作爲與import
一個模塊執行。所以,當作爲源參數到Python的調用,而不是被導入時提供像
def be_awesome():
pass
if __name__ == '__main__':
def be_more_awesome():
pass
文件只會有一個定義be_more_awesome
。作爲一般規則,那麼在__name__
測試之後恰當地放置僅當該文件作爲腳本直接運行時才應該運行的代碼。問自己這些問題
main
功能的封裝你400行的情況下)如果答案要麼這些問題是‘是’,它(可能)所屬的__name__
試驗後,如果沒有,它(可能)沒有。
一個簡單的替代方法是將主代碼添加到main()
函數中,並在__name__
檢查後調用它。這樣一來,你會得到:在__name__
檢查
一個例子:
def main():
# Be awesome here.
if __name__ == '__main__':
main() # or sys.exit(main()), if you want to return an exit code
非常感謝你,我會按照你的建議 – Vor
如果你想重用代碼,你不應該把它if __name__ == '__main__'
後(用這個函數/類/模塊,並進行簡單的電話可能從該部分的程序)。讓我在這裏提到Python的禪(至少兩點在你的情況):
稀疏比密集好。
可讀性計數。
非常感謝你的回答。 – Vor
我以爲'__main__'的用途是如果你正在編寫一個庫文件而不是應用程序入口點。當你編寫的.py文件被導入時,'__name__!='__main __'並且你的if語句中的任何內容都將被忽略,如果你在一個文件中編寫整個應用程序,你真的需要檢查嗎? – dlp