2016-01-21 62 views
-1

我想定義一個函數,它帶有兩個參數,可能有三個參數。 我相當肯定這是不可能的,但考慮到內置range功能有:是否有可能在Python中定義一個具有多於一組參數的函數?

range(stop) -> range object 
range(start, stop[, step]) -> range object 

也許這是可能的嗎?或者,也許我有錯誤的想法,因爲range實際上是一個不可變的序列類型?

爲了清楚起見,相同的功能example(x,y)可以像example(x,y,z)

+0

「我相當肯定這是不可能的」 - 你是否嘗試閱讀[官方教程的關於定義函數的部分](https://docs.python.org/3.4/tutorial/controlflow.html#more-上定義函數)?我很好奇你做了多少研究。 – TigerhawkT3

+0

約6分鐘通過堆棧交換和零教程閱讀搜索。 – adhdj

+0

儘管我不得不承認,但我並沒有考慮在搜索時使用關鍵字'可選'。我完全錯了。 – adhdj

回答

1
def example(x, y, z=None): 
    if z is None: 
     return x + y 
    else: 
     return x + y + z 

然後

>>> example(3, 4) 
7 

>>> example(3, 4, 5) 
12 
+0

就是這樣!謝謝 – adhdj

1

這是可能通過default參數運行(有時稱爲keyword參數)...

def example(x, y, z=None): 
    ... 

在該函數中,您將檢查是否z is None以查看它是否提供。

您還可以使用*args這裏:

def example(x, y, *args): 
    ... # *args is a tuple of all of the rest of the positional arguments. 

在這裏,你可以使用len(args)來確定第三個參數傳遞。

相關問題