针对函数传参的拆包
# 原代码
def func(name, *args):
if len(args) > 0:
for i in args:
print('{0}学过了{1}'.format(name, i))
else:
print('没有技能')
skill = ['oracle', 'mysql', 'java']
# 调用函数
func('jojo', skill)
运行结果如下:
jojo学过了['oracle', 'mysql', 'java']
为什么会这样呢!,函数里面打印一下args
def func(name, *args):
print(args) # 新增这个打印
if len(args) > 0:
for i in args:
print('{0}学过了{1}'.format(name, i))
else:
print('没有技能')
skill = ['oracle', 'mysql', 'java']
# 调用函数
func('jojo', skill)
查看结果,知道原因,for循环的是元组,里面就一个列表元素
(['oracle', 'mysql', 'java'],)
jojo学过了['oracle', 'mysql', 'java']
怎么拆分呢,函数里面再去循环?
# 最终代码
def func(name, *args):
print(args) # 查看这个时候的值
if len(args) > 0:
for i in args:
print('{0}学过了{1}'.format(name, i))
else:
print('没有技能')
skill = ['oracle', 'mysql', 'java']
# 调用函数
func('jojo', *skill) # 拆分 加上*
运行结果:
('oracle', 'mysql', 'java')
jojo学过了oracle
jojo学过了mysql
jojo学过了java
依次类推 针对**kwargs ,那么拆包方式同理 **