python項目中爲什麼經常看見“ if __name__ == ‘__main__’:”?

前言
儘管大家在編寫python會允許你像shell腳本一樣,把大量代碼堆積在一起,但是,有很多python入門的書籍,都會建議封裝一個函數去寫(面向對象也可以寫),然後在最後統一調用,例如這樣 :

def main(): 
#具體代碼   
if __name__ == '__main__':
    main()

很多文章都會說這是由於代碼樣式等原因,但實際上,不這樣寫,有時會直接導致錯誤。

例如,打開python的一個字節的class變量部分,可以在這裏看到在線版本,然後在中間複製示例代碼,運行,就可以看到預期的正確結果。

但是現在將代碼中的所有“swaroop”替換爲“xxx1”,將所有“kalam”替換爲“yyy1”,然後再次運行,在程序結束時,您將得到這樣一個奇怪的錯誤(python 2.6.5實驗):

異常屬性錯誤:>忽略中的“nonetype”對象沒有屬性“population”

也就是說,如果我們改變變量名,程序就會出錯…

原因是,當Python最終銷燬所有類和對象時,它不處理這些對象之間的依賴關係,而是根據變量的名稱決定某種順序操作。因此,Person類本身在YYY2之前就被銷燬了,所以當您解構YYY2時,您將執行它的Del_()方法,並發現父類已經不存在了。~~

這在Python解析器中應該是一個bug,但是如果您將本例中類人員之外的所有代碼寫入一個main()函數並通過上面的方法調用它,就不會發生這種情況。

所以,你最好不要太注意幾行代碼,養成這個好習慣。

小編推薦一個學python的學習qun 740322234
無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分

享!

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