python函数参数使用
这篇博文讲的更详细
-
位置实参
定义、调用函数时形参与实参通过位置进行参数传递 -
关键字实参
调用函数时,通过键值对将实参与形参对应 -
默认值
定义函数时,对形参指定默认值,无传递实参使用默认值,有则使用实参 -
任意数量实参
格式为*arg,调用传递实参时以元组格式传入形参,用于知道用户输入信息但不知道具体实参数量 -
任意数量关键字实参
格式为**kwargs,传递关键字实参,以字典形式传入,用于不知道用户输入信息以及数量的情形 -
参数顺序
- 定义函数时顺序为:位置参数—*args—默认参数—**kwargs
*args和默认参数可以调换位置 - 调用函数时顺序为:位置参数—*args—关键字参数—**kwargs
- 定义函数时顺序为:位置参数—*args—默认参数—**kwargs
-
解包
- 调用函数时*可以进行解包,将可迭代对象解包为离散参数
- **可以对字典进行解包,得到字典的value解包参数,*dict可以得到key解包参数
def para_test(a, b, c, *args, d=1, e=2, f=3, **kwargs):
print('[a, b, c, d, e, f] =', str([a, b, c, d, e, f]))
print('arg' + str(args))
print('kwargs' + str(kwargs))
para_test(1, 2, 3, 'a', 'b', g='g', h='h')
# [a,b,c,d,e,f] = [1, 2, 3, 1, 2, 3]
# arg('a', 'b')
# kwargs{'g': 'g', 'h': 'h'}
args = ['a', 'r', 'g', 's']
kwargs = {'aa': 1, 'rr': 2, 'gg': 3, 'ss': 4}
para_test(1, 2, 3, *args, **kwargs)
# [a, b, c, d, e, f] = [1, 2, 3, 1, 2, 3]
# arg('a', 'r', 'g', 's')
# kwargs{'aa': 1, 'rr': 2, 'gg': 3, 'ss': 4}