Python函數的參數

來源:互聯網
上載者:User

標籤:

各種語言都有它自己特定的函數參數定義方法。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函數的參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.