Python 函式的五大引數

2022-06-19 16:39:10 字數 3181 閱讀 2238

python的函式引數挺重要的,總結一下:

(1)位置引數:沒啥好說的,就是普通的引數。

(2)預設引數

引數形式:def power(x, n = 3): (在函式定義時通過對乙個形參賦值的形式,來實現預設引數)

特別注意:預設引數一定要為不可變物件

1

def add_end(l=):

end')3

return l

原因解釋如下:

python函式在定義的時候,預設引數l的值就被計算出來了,即,因為預設引數l也是乙個變數,它指向物件,每次呼叫該函式,如果改變了l的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。(原因最好也了解一下)

修改上面的例子可以用none這個不變物件來實現

1

def add_end(l=none):

2if l is

none:

3 l =

end')5

return l

為什麼要設計strnone這樣的不變物件呢?因為不變物件一旦建立,物件內部的資料就不能修改,這樣就減少了由於修改資料導致的錯誤。此外,由於物件不變,多工環境下同時讀取物件不需要加鎖,同時讀一點問題都沒有。我們在編寫程式時,如果可以設計乙個不變物件,那就盡量設計成不變物件。(不變物件的優點)

(3)可變參

引數形式:

1

def calc(*numbers):

2 sum =0

3for n in

numbers:

4 sum = sum + n *n

5return sum

機理:函式在呼叫時,把接收到的引數組裝成乙個tuple,傳遞引數時可以傳遞任意引數。

在傳遞引數時,如果我們已經有乙個list或者tuple。這裡給出有兩種方法:

1 calc(nums[0], nums[1], nums[2])

2 calc(*nums)

在第二種方法中,python允許你在list或tuple前面加乙個*號,把list或tuple的元素變成可變引數傳進去。(例子參考廖雪峰**)

(4)關鍵字引數

引數形式:

1

def person(name, age, **kw):

2print('

name:

', name, '

age:

', age, '

other:

', kw)

34 >>> person('

adam

', 45, gender='

m', job='

engineer')

5 name: adam age: 45 other:

機理:關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。

在傳遞引數時,如果我們已經有乙個dict:

1 person('

jack

', 24, **extra)

**extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得乙個dict,注意kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra

(與可變引數類似)

(5)命名關鍵字引數

引數形式:

1

def person(name, age, *, city, job):

注:如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:

1

def person(name, age, *args, city, job):

使用時:命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯:

1 >>> person('

jack

', 24, '

beijing

', '

engineer')

2traceback (most recent call last):

3 file "

", line 1, in

4 typeerror: person() takes 2 positional arguments but 4 were given

引數的預設值:命名關鍵字引數可以有預設值,從而簡化呼叫,其中命名關鍵字引數city具有預設值,呼叫時,可不傳入city引數:

1

def person(name, age, *, city='

beijing

', job):

2print

(name, age, city, job)

34 >>> person('

jack

', 24, job='

engineer')

5 jack 24 beijing engineer

引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

C 五大函式

析構函式 釋放掉在物件使用期間獲得的資源,包括關於任意的new操作呼叫對應的delete,關閉任何開啟的檔案,等等。拷貝建構函式和移動建構函式 構造乙個新的物件,被初始化為與另乙個同樣型別物件相同的狀態。如果這個已存在的物件是乙個左值,那麼就用拷貝建構函式 而如果這個已存在的物件是乙個右值,那麼就用...

django admin中的五大配置引數

list display 控制展示字段,注意不能放多對多字段 list display links 控制跳轉字段 search fields 配置在前端可用的查詢字段,查詢欄位是或關係 list filter 設定過濾字段,建議放外來鍵字段用來做過濾並且上下是and關係 actions 批量處理函式...

python五大排序 五大排序演算法(Python)

釋放雙眼,帶上耳機,聽聽看 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。氣泡排序 基本思想 兩個數比較大小,較大的數下沉,較小的數冒起來。演算法描述 比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個 對每...