Python在開發語言中算是一個比較新的開發語言了,在人工智能崛起之后現在的python在開發界是有了一定的地位的了,那么對于python的工作者來說python重裁機制的原理是怎么樣的呢?下面python培訓機構粵嵌科技的小編就來給大家整理一篇關于這個問題的技術文,希望對大家有一定的作用。
函數重載主要是為了解決兩個問題。
1、可變參數類型
2、可變參數個數
另外,一個基本的設計原則是,僅僅當兩個函數除了參數類型和參數個數不同以外,其功能是完全相同的,此時才使用函數重載,如果兩個函數的功能其實不同,那么不應當使用重載,而應當使用一個名字不同的函數。
那么對于情況 1 ,函數功能相同,但是參數類型不同,python 如何處理?答案是根本不需要處理,因為 python 可以接受任何類型的參數,如果函數的功能相同,那么不同的參數類型在 python 中很可能是相同的代碼,沒有必要做成兩個不同函數。
那么對于情況 2 ,函數功能相同,但參數個數不同,python 如何處理?大家知道,答案就是缺省參數。對那些缺少的參數設定為缺省參數即可解決問題。因為你假設函數功能相同,那么那些缺少的參數終歸是需要用的。
重載(overload)和覆蓋(override),在C++,Java,C#等靜態類型語言類型語言中,這兩個概念同時存在。前者是為了讓同一個函數名(方法名)匹配不同的參數(個數不同,類型不同);后者是為了實現多態,在相同名稱的函數(方法)和參數,在不同的類中(父類,子類),有不同的實現。
Python是動態類型語言,不能簡單地說它支持或者不支持重載,重載仍然存在,只是以不同的方式呈現。原來我們理解的重載,都是在靜態類型語言中,關心參數個數以及參數類型;在動態類型語言里的重載根本不需要關心參數類型,只需要關心參數個數。而在Python里,關心參數個數的重載是由默認參數和傳遞參數名稱來實現的。這樣,程序員就沒有必要自己來寫兩個名稱一樣而參數不同的函數了!事實上,在同一個模塊或者同一個類中,寫兩個名稱相同的方法的時候(參數個數是否相同不重要),后面的那個方法會簡單覆蓋前面的方面;其次,在子類繼承父類時,同名(不同參)的方法也會簡單覆蓋(子類覆蓋父類)。但是,這不說明Python沒有重載,它只是不需要程序員自己來實現重載(如果說程序員還需要做什么的話,那就僅僅是要定義默認參數和參數名稱)。如果你需要重載的話,”默認參數+參數名傳遞“就能達到你想要的重載了!
以上就是python培訓機構粵嵌科技給大家整理的關于python重載機制原理技術文了,對于python技術這塊如果說你還有什么其他的疑問或者是不懂的話,那么粵嵌科技歡迎大家來和我們的python講師進行溝通和交流,獲取方式可以通過點擊我們文章下面的獲取試聽資格按鈕來獲取我們的和講師溝通資格。