Python的三种可变参数
单个星号表示这个位置接收任意多个非关键字参数,并将其转换为元组
双星号代表这个位置接收任意多个关键字参数,并将其转换为字典
*arg的功能:接收N个位置参数,转换为元组形式
def add(*args):
print(args)
add(1, 2, 3)
(1, 2, 3)
**args的功能:接收N个关键字参数,并将其转换为字典格式
def add2(**kwargs):
print(kwargs)
add2(k1=1,k2=2,k3=3)
{'k1': 1, 'k2': 2, 'k3': 3}
注意事项:同时使用 args和 kwargs 时,必须 args参数列要在 kwargs前
单个星号:将单列表、元组等进行拆分,将其中的每个元素作为单个元素
lst = [1, 2, 3, 4]
print(*lst)
1 2 3 4
双星号:将字典进行拆分,将每个元素作为k=v的形式进行拆分
拆分前:
info = {'age': 21, 'sex': '男'}
def test(**kwargs):
print(kwargs)
test(info=info)
拆分后
test(**info)
{'age': 21, 'sex': '男'}
**命名关键字参数
采用命名关键字参数可以限制函数传入的关键字参数**
错误用法
def get_info(name, age, *, sex):
print(name, age, sex)
get_info('zss',21,'男')
TypeError: get_info() takes 2 positional arguments but 3 were given
正确用法
get_info('zss',21,sex='男')
zss 21 男