python 中為什麼不需要過載

2022-05-27 14:33:09 字數 2178 閱讀 6150

函式過載主要是為了解決兩個問題。

(1)可變引數型別。

(2) 可變引數個數。

另外,乙個基本的設計原則是,僅僅當兩個函式除了引數型別和引數個數不同以外,其功能是完全相同的,此時才使用函式過載,如果兩個函式的功能其實不同,那麼不應當使用過載,而應當使用乙個名字不同的函式。

好吧,那麼對於情況 (1),函式功能相同,但是引數型別不同,python 如何處理?答案是根本不需要處理,因為 python 可以接受任何型別的引數,如果函式的功能相同,那麼不同的引數型別在 python 中很可能是相同的**,沒有必要做成兩個不同函式。

那麼對於情況 (2),函式功能相同,但引數個數不同,python 如何處理?答案就是預設引數。對那些缺少的引數設定為預設引數即可解決問題。因為你假設函式功能相同,那麼那些缺少的引數終歸是需要用的。

好了,鑑於情況 (1) 跟 情況 (2) 都有了解決方案,python 自然就不需要函式過載了。

這裡順便說一下python中引數傳遞時候的*arg和**args,看幾個小栗子就一清二楚了:

第乙個小栗子:

1

def test1(farg,*args):

2print ("

farg:

",farg)

3for value in

args:

4print ("

args:

",value)

56 test1(1,"

two",3,"

4")

附上結果:

第二個小栗子:

1

def test2(farg,**args):

2print ("

farg:

",farg)

3for key in

args:

4print ("

key:%s values:%s

"%(key,args[key]))

結果:

下面的例子更加清晰,定義的時候 * 的作用 將位置實參 裝配成元組,

**的作用 將關鍵字實參 裝配成字典

下面的例子是呼叫的時候 * 的作用將元組或列表 打散成位置引數進行引數傳遞,** 的作用將字典打散成關鍵字引數進行引數傳遞

下面

1

簡單來說,python中為什麼不需要過載,過載要解決的是引數型別和引數個數的問題,對於型別,python不像是c語言整型要寫int,字串要寫str,,,這些python都不需要。

那麼需要解決的就是傳遞引數個數問題,此時python可以傳遞列表呀,字典呀,可以使用*arg和**args呀,所以python根本不需要過載。

最近感覺自己特別懶,尤其懶,可是剛剛畢業沒有什麼工作經驗,必須要一點一點的積累。竟然出現被一塊石頭絆倒兩次的情況,也是服了自己了。。。

唉,感覺自己不是自己了

簡單簡單

python為什麼不需要swap a,b

關鍵字 python swap 致 謝 這是一篇譯稿,原作者是一位nasa的程式設計師,非常感謝他在python社群及時 詳細的為我解答了問題,並在講解中解說了一些python的相關知 識,還寬容的對待我蹩腳的英語。感謝他同意我將他的來信介紹給大家。這是一位謙和有禮又博學多才的朋友。他幫我理解pyt...

python不需要過載的原因

函式過載主要是為了解決兩個問題。1 可變引數型別。2 可變引數個數。另外,乙個基本的設計原則是,僅僅當兩個函式除了引數型別和引數個數不同以外,其功能是完全相同的,此時才使用函式過載,如果兩個函式的功能其實不同,那麼不應當使用過載,而應當使用乙個名字不同的函式。好吧,那麼對於情況 1 函式功能相同,但...

為什麼 Linux 不需要碎片整理

想要知道為什麼在正常使用中,linux檔案系統不需要進行碎片整理,而windows要。你需要了解為什麼會生成碎片,而linux和windows這兩個檔案系統,它們分別是如何工作的。什麼是碎片 許多windows使用者,即使沒有太多經驗,我相信他們也會定期進行碎片整理,來加速其電腦。為什麼要這麼做,許...