python中的過載
在一些靜態語言中,大都存在有一個過載的概念。這是在OOP(面對物件程式設計)中一個必不可少的一個行為。
所謂過載,就是多個相同函式名的函式,根據傳入的引數個數,引數型別而執行不同的功能。所以函式過載實質上是為了解決程式設計中引數可變不統一的問題。
python 中的過載
在python中,具有過載的思想卻沒有過載的概念。所以有的人說python這麼語言並不支援函式過載,有的人說python具有過載功能。實際上python程式設計中具有過載的目的缺無過載的行為,或者說是python並不需要過載!
python是一門動態語言,不需要宣告變數型別,函式中可以接受任何型別的引數也就無法根據引數型別來支援過載,python沒有必要去考慮引數的型別問題,這些都可以在函式內部判斷處理,並無必要去在寫一個函式。python 有多種傳參方式,預設引數/可變引數/可變關鍵字引數可以處理函式引數中引數可變的問題。
python3.4中增加的過載機制
如果你不用過載就會渾身難受的話
那麼在python3.4中提供有一個轉發機制來實現過載
from functools import singledispatch
@singledispatch
def function(obj):
print('%r'%(obj))
@function.register(int)
def function_int(obj):
print('Integer: %d'%(obj))
@function.register(str)
def function_int(obj):
print('String: %s'%(obj))
@function.register(list)
def function_list(obj):
print('List: %r'%(obj))
if __name__ == "__main__":
function(1)
function('hello')
function(range(3))
function(object)
相關文章
- python中實現函式過載Python函式
- 在 Python 中實現函式過載Python函式
- Python 方法過載Python
- python-過載Python
- PHP中的過載PHP
- 如何在Python中實現函式過載Python函式
- Python 運算子過載Python
- python支援過載嗎Python
- python之運算子過載Python
- Python 函式如何過載?Python函式
- Python模組過載的五種方法Python
- Python中有重寫和過載的方法嗎?Python
- 關於python建構函式的過載Python函式
- PHP 中的操作符過載PHP
- 如何實現JS中的過載JS
- Java中的過載和重寫Java
- C++中運算子的過載C++
- python3-----繼承 過載Python繼承
- python中PCA的處理過程PythonPCA
- [轉載] Java Challengers#1:JVM中的方法過載JavaJVM
- JavaScript中的函式過載(Function overloading)JavaScript函式Function
- 118 C++中函式的過載C++函式
- 【python隨筆】之【運算子過載】Python
- python函式過載是什麼?Python函式
- python中try語句的工作過程Python
- reloadium:提供Python高階熱過載功能Python
- 過載的奧義之函式過載函式
- Mybatis的Mapper中的方法為什麼不能過載?MyBatisAPP
- 教你快速理解C++中的運算子過載C++
- 方法的過載
- [轉載] python通過反射執行程式碼Python反射行程
- PHP中實現函式過載PHP函式
- Java中的過載和覆蓋的細微差別 - rajivprabJava
- AI回答記錄:python中有過載與重寫的概念嗎?AIPython
- C++過載的奧義之運算子過載C++
- 【Java】方法的過載Java
- 為什麼 Python 沒有函式過載?如何用裝飾器實現函式過載?Python函式
- [轉載] Python中協程的詳細用法和例子Python