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