python关键字参数与可变参数

1.关键字参数

关键字参数可以传入0或者多个参数名的参数,这些参数在函数定义中并没有出现,这些参数在函数内部自动封装集成一个字典(dict),通常来讲关键字参数是放在函数参数列表的最后,通过一个demo代码来看:

def write_msg(id, **kwargs):
    msg = {
        'id': id,
        'name': None,
        'age': None,
        'sex': None,
        'city': None
    }

    for key, val in kwargs.items():
        msg[key] = val

    return msg

**kwargs在函数内部是一个字典,我们可以对这个字典进行迭代,取出函数的键(key)和值(value),对上面的demo测试如下:

 bruce_msg = write_msg(1, name='Bruce', age=26, sex='male', city='guangzhou')
 lily_msg = write_msg(2, name='Lily', age=26, sex='female', city='zhongshan')
 tom_msg = write_msg(2, name='Tom', age=30, sex='male', city='shanghai', post='engineer')
 print(bruce_msg)
 print(lily_msg)
 print(tom_msg)
 none_msg = write_msg(3)
 print(none_msg)

结果:

{'id': 1, 'name': 'Bruce', 'age': 26, 'sex': 'male', 'city': 'guangzhou'}
{'id': 2, 'name': 'Lily', 'age': 26, 'sex': 'female', 'city': 'zhongshan'}
{'id': 2, 'name': 'Tom', 'age': 30, 'sex': 'male', 'city': 'shanghai', 'post': 'engineer'}
{'id': 3, 'name': None, 'age': None, 'sex': None, 'city': None}

2.可变参数

函数的可变参数所传入的内容个数是可以变化的,可以是1个,2个到任意个。使用可变参数可以很好的解决参数灵活变化的问题,单有一点需要注意,可变参数在函数定义时出现在在特定参数和默认参数面前,因为可变参数会覆盖掉这些参数,来看一个demo:

def compute_type(type, *args):
    val = 0
    if type == 'add':
        for arg in args:
            val += arg
        return val
    elif type == 'multi':
        val = 1
        for arg in args:
            val *= arg
        return val
    else:
        print('not support this type compute!')

大行调用compute_type的时候,除了特定参数type,后面传入的参数都会被识别为可变参数,可变参数args亦是一个可迭代的对象,对demo测试如下:

add_num = compute_type('add', 1,2,3,4,5,6,7,8,9,10)
print('add:', add_num)
multi_num = compute_type('multi', 1,2,3,4,5,6,7,8,9)
print('multi:', multi_num)

结果:

add: 55
multi: 362880

猜你喜欢

转载自blog.csdn.net/qq_37338983/article/details/103082344