天天看點

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

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

享!

繼續閱讀