非关键字参数和关键字参数(*args **kw)

这两个参数的存在是方便在调用函数的时候可以灵活的传参

  • args是可变参数,args接收的是一个tuple;
  • kw是关键字参数,kw接收的是一个dict。

非关键字*args

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

>>> count(1, 2, 3)
14
>>> count(1, 3, 5, 7)
84

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

>>> nums = [1, 2, 3]
>>> count(*nums)

关键字参数**kw

extra表示把extra这个dict的所有key-value用关键字参数传入到函数的kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
posted @ 2021-12-11 17:35  梦想家肾小球  阅读(138)  评论(0编辑  收藏  举报