Python中*args 和**kwargs的用法


剛開始學習python,覺得args、**kwargs參數很難理解。
大概知道
args是解包元組,**kwargs是解包字典,但是僅僅知道這點,還是不會使用這兩個參數。

# *args參數的使用
# 計算除第一個參數外所有參數之和
def calculate_sum(*args):  # args是一個元組
    return sum(args)   # 使用內建函數’sum’,它使用元組或數列作為參數,返回元組所有元素的和。

def ignore_first_calculate_sum(a,*iargs):  # 第一個參數被常規參數’a’接收,其他參數被’iargs’作為元組接收
    required_sum = calculate_sum(*iargs)
    print("sum is ", required_sum)

def test_sum():
    ignore_first_calculate_sum(1,*(2,3,4,5,6))
    '''
    用到函數’calculate_sum’,’calculate_sum’需要多個位置參數作為元組傳給’args’,
    所以在函數’ignore_first_calculate_sum’需要拆元組’iargs’,然后將元素作為位置參數傳給’calculate_sum’。
    注意,用’*’拆元組
    '''
def fun(a,**kwargs):
    print('a is :',a)
    print("We expect kwargs 'b' and 'c' in this function")
    print("b is ", kwargs['b'])
    print("c is ", kwargs['c'])

def test_kwargs():
    fun(1,b=3,c=44)
    '''
    fun(1, {'b':2, 'c':34}),這樣調用會報錯:ypeError: fun() takes exactly 1 argument (2 given)
    盡管’kwargs’接收鍵值參數作為一個字典,但你不能傳一個字典作為位置參數給’kwargs’
    可以這樣調用:fun(1, **{'b':2, 'c':34})
    在一個字典前使用”**”可以unpack字典,傳字典中的數據項作為鍵值參數。
    '''
  • todo

https://www.cnblogs.com/cwind/p/8996000.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM