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