1 一个星号(*)
一个星号形参的函数会把多个位置参数值当成元祖的形式传入,也就是传入的多个参数值可以在函数内部进行元祖遍历
# 求传入了多少个参数
def howlong(first, *other):
print(type(other))
# other实际以元组的形式传入
for o in other:
print(o)
return 1+len(other)
lo = howlong("aa", "bb", "cc", "bb")
print(lo)
输出:
<class 'tuple'>
bb
cc
bb
4
2 两个星号(**)
形参前面加两个星号,两个星号形参的函数会把关键字参数值当成字典的形式传入,在函数内部会把关键字参数当成字典在函数内部进行遍历
# 求传入了多少个参数
def howlong(first, **other):
print(type(other))
# other实际以元组的形式传入
for o in other.items():
print(o)
return 1+len(other)
lo = howlong("aa", b="bb", c="cc", d="bb")
print(lo)
输出:
<class 'dict'>
('b', 'bb')
('c', 'cc')
('d', 'bb')
4
3 一个星号和两个星号混合使用
# 求传入了多少个参数
def howlong(first, *args, **kargs):
print(type(args))
print(args)
print(type(kargs))
print(kargs)
return 1+len(args)+len(kargs)
lo = howlong("aa",'dd', b="bb", c="cc", d="bb")
print(lo)
输出:
<class 'tuple'>
('dd',)
<class 'dict'>
{'b': 'bb', 'c': 'cc', 'd': 'bb'}
5
注意
关键字参数必须在位置参数之后
lo = howlong("aa",'dd', b="bb", c="cc", d="bb")