Python函數中 *和**的使用-收集參數和其逆過程

* 和 ** 使用在函數中,可以時是函數可以接受任意多的參數,也就時收集參數的作用。

1. * 的使用

函數參數中使用一個星號的目的時收集多餘的位置參數,如果沒有多餘的參數收集,帶星號的參數就是 個空元組。

另外對於函數調用的地方使用星號,是參數收集的逆過程,使用時不是要收集參數,而是函數執行中進行參數分配

實例:


def printInfo(name, *others):
    print(name)
    # others is one Tuple
    print(others)

printInfo('devin')
print('*' * 20)
printInfo('devin', 25, 'male')
print('-' * 20)
info = ('devin', 25, 'male')
printInfo(*info)

輸出結果:

devin
()
********************
devin
(25, 'male')
--------------------
devin
(25, 'male')

2. ** 的使用

函數參數中使用雙星號(**)的目的處理關鍵字參數的收集操作,返回的時字典而不是元組

同樣,在調用函數時使用 **來進行字典參數的傳遞,可以實現在函數體中進行參數的分配-參數收集的逆過程。

實例:

def printInfo(name, *param1, **param2):
    print(name)
    print(param1)
    print(param2)


printInfo('Devin', 25, 'male', role='freedom', hope='peace')
print('=' * 40)


def printInfo2(name, age):
    print(name)
    print(age)


info = {'name': 'devin', 'age': 'peace'}
printInfo2(**info)

輸出結果:

Devin
(25, 'male')
{'role': 'freedom', 'hope': 'peace'}
========================================
devin
peace
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章