python的函數參數

目錄

簡介

位置參數

默認參數

可變參數

關鍵字參數

 命名關鍵字參數

組合參數

參考資料:


簡介

python 中函數有5種參數類型,位置參數,默認參數,可變參數,命名關鍵字參數和關鍵字參數,

在函數參數列表中,參數的優先順序是 

位置參數 >默認參數>可變蠶食>命名關鍵字參數>關鍵字參數

位置參數

  • 給函數的位置參數傳參時,參數位置與函數變量的位置一一對應。例如:
# 位置參數

def power(x,n):
    sum = 1
    while(n>0):
        n=n-1
        sum = sum * x
    print( sum)
    return sum

# 調用示例:
 power(2,0)

給位置參數傳參時,也可以通過列表或元組的方式進行

#傳入的參數值是通過一個元組方式,如
    tuple1 = (3,2)
    power(*tuple1)
# 注 此時元組數據的個數必須與函數變量的個數一致

默認參數

我理解的是默認參數是位置參數的特殊類型,在定義函數的同時,給函數參數設置了默認值。

在調用函數時,默認參數可以被初始化,也可以不傳入任何值

默認參數必須指向一個不可變對象。如果默認參數是一個可變參數時,當調用函數 默認參數被修改時,它的值就發生了變化。

示例:

# 默認參數
def add_end(L=None):
    if L is None:
        L = []
    L.append("END!")
    print(L)
    return L

# 調用示例
add_end([1,2,3])

可變參數

定義可變參數時 在參數前面加一個*號, 表示該參數是可變參數了,

可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。 

可以接受列表或元組類型的參數

可變參數函數應該如何調用

1  將參數值羅列在參數中

2. 當可變參數的值是列表或者是元組時,調用時,在變量前面添加 * 號

3. 可變參數在函數調用時自動組裝爲一個tuple

示例:

# 可變參數 可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。

def caculate(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n
    print(sum)
    return sum

# 調用示例
    # 多個參數值依次傳入
    caculate(1,2,3,4,5)
    caculate(1,2,3)
    #
    # 列表類型的可變參數
    # para = [1,2,3,4,5]
    # caculate(*para)

關鍵字參數


1. 定義關鍵字參數時,在參數前面添加兩個星號 **
2. 允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝爲一個dict
3. 關鍵字參數是,是函數調用數據的一個拷貝,函數內部修改關鍵字參數,不會影響傳入的關鍵字參數的值 (即:傳入的字典變量的值不會被更改)
示例:

# 關鍵字參數
def person(name,age,**kw):
    print('name:', name, 'age:', age, 'other:', kw)

# 調用示例 1:
person("Jack", '13')
person("Jack",'13',city ='BeiJing',job='HeBei')

輸出:
name: Jack age: 13 other: {}
name: Jack age: 13 other: {'city': 'BeiJing', 'job': 'HeBei'}

關鍵字參數也可以通過字典變量的方式調用,調用時在變量前面添加兩個星號 **

示例:

# 通過字典變量給關鍵字參數傳參
dicts = {'city':'BeiJing','job':'Engineer'}
person("Jack", '13',**dicts)

 命名關鍵字參數

1. 限制關鍵字參數的名字(函數參數中將參數的關鍵字定義好)

2. 當函數參數中沒有定義可變參數時,命名關鍵字參數需要一個特殊分隔符*,*後面的參數被視爲命名關鍵字參數

當函數參數列表中包含了可變參數,則不需要這個特殊的分割符號了。

示例:

# 函數定義中已沒有一個可變參數,需要一個特殊的分割符號'*'
def person(name, age, *, city, job):
    print(name, age, city, job)

# 如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符*了
def person(name, age, *args, city, job):
    print(name, age, args, city, job)

# 調用示例:
person("Jack",'13',city ='BeiJing',job='Engineer')

組合參數

 Python函數中,可以用位置參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

但是,不要同時使用太多的組合,否則函數接口的可理解性很差

思考:

對於任意函數,都可以通過類似func(*args, **kw)的形式調用它,無論它的參數是如何定義的。

 

參考資料:

https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888

 


 

 



 

 


 

 

 


 

 

 


 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章