標籤:
各種語言都有它自己特定的函數參數定義方法。Python語言對於函數參數的定義非常靈活,它提供了三種定義函數參數的方式。一起來看看吧,希望對大家學習python有所協助。
1. Positional arguments位置參數
這是Python中最簡單的給函數傳遞參數的方式。當調用函數時,調用代碼中的函數參數與函數定義時的參數的順序一致。例如:
>>> defpower(x, y):... r = 1... while y > 0:... r = r * x... y = y - 1... return r... >>> power(3, 4)27
上述代碼中,調用函數時3->x,4->y。也可以在定義函數時,給函數參數指定預設值,類似於下面這樣:
def fun(arg1, arg2=default2, arg3=default3, . . .)
包含有預設值的函數參數,必須在函數參數列表的最後面的位置。如果上面的函數定義中arg1也包含預設值的話,所有後面的參數都應該包含預設值。
在調用時,如果沒有指定帶預設值的函數參數,則使用參數中的預設值。例如調用上面的函數時,通過fun(1)這種方式調用時,1->arg1,arg2=default2,arg3=default3;通過fun(1,2,3)這種方式調用時,1->arg1,2->arg1,3->arg3。
2. Keyword arguments關鍵字參數
可以在調用函數時,使用相應函數參數的名稱來傳遞參數。例如還是上面power函數的定義,在調用時,通過如下方式:
>>> power(y=2, x=3)9
上面的函數調用,因為使用了函數參數的名稱來傳遞參數,所以參數的位置便無關緊要了。
3. Variable-length argument可變數量參數
Python的函數也可以處理可變數量的函數參數。可以有兩種方式:
3.1. 處理任意數目的位置參數
在函數的參數列表中,最後一個參數前添加一個 * 號,便可以將傳入該函數的多餘的參數存在以該參數命名的元組中。例如,有如下函數定義:
>>> def maximum(*numbers):... if len(numbers) == 0:... return None... else:... maxnum = numbers[0]...for n in numbers[1:]:... if n > maxnum:... maxnum = n... return maxnum
通過如下方式調用:
>>> maximum(3, 2, 8)8>>> maximum(1, 5, 9, -2, 2)9
3.2. 處理任意數目的關鍵字參數
在函數的參數列表中,最後一個參數前添加一個 ** 號,便可以將傳入該函數的多餘的關鍵字參數存在以該參數命名的字典中。例如,有如下函數定義:
>>> def example_fun(x, y, **other):... print("x: {0}, y: {1}, keys in ’other’: {2}".format(x, ... y, list(other.keys())))... other_total = 0... for k in other.keys():... other_total = other_total + other[k]... print("The total of values in ’other’ is {0}".format(other_total))
通過如下方式調用:
>>> example_fun(2, y="1", foo=3, bar=4)x: 2, y: 1, keys in ’other’: [’foo’, ’bar’]
The total of values in ’other’ is 7
4. Mixing argument-passing techniques混合參數
可以混合上面的3種方式定義函數,只要可變長度的函數參數定義在函數參數列表的最後。例如:
# Accept variable number of positional or keyword argumentsdef spam(*args, **kwargs):
# args is a tuple of positional args
# kwargs is dictionary of keyword args
...
來源:Andy’s Techblog
Python函數的參數