2016-12-26 68 views
-2

在Python中,內置的函數可以使用兩個不同版本的參數。例如,相同的功能,2種參數

str(object='') -> str 

OR

str(bytes_or_buffer[, encoding[, errors]]) -> str 

是否有正常的一段代碼,這樣做的方法嗎?也許像

def func(arg_option_1): 
    # do something 

def func(arg_option_2): 
    # do something else 
+3

是......您是否閱讀過任何[教程](https://docs.python.org/3/tutorial/controlflow.html#defining-functions)?它很好地解釋瞭如何使用可變數量的參數以及如何使用默認參數...... – mgilson

+0

實際上,使用'func'的例子與使用'str'的​​例子不同,因爲它們都有一個參數。你的情況中最簡單的選擇就是在函數內部有一個'if'語句。 –

+0

Python不支持這樣的多態; 「func」的第二個版本將簡單地替換第一個版本。你當然可以有* optional *參數,就像'str'一樣,或者根據傳遞哪種對象來做不同的事情(取決於你在做什麼)。 – jonrsharpe

回答

3

在Python中,一個名字的意思只有一件事。它是對某個對象的單一引用。所以,你不能有相同的'名字'定義兩個不同的東西。

但是你可以在同一個函數中實現兩個不同的事情,方法是使它具有可變的位置參數和變量關鍵字參數並在函數中對其進行驗證。

你可以看到在其他的StackOverflow後回答的例子:https://stackoverflow.com/a/5079766/3883609

或者,如果你事先知道這兩種不同類型參數的函數需要的,你可以使用isinstance()來驗證並採取相應不同的路徑。

>>> isinstance(10,int) 
True 
>>> isinstance('hi',str) 
True 
>>> isinstance(10,str) 
False 
相關問題