Python 包裹传递和解包传递
简介
在 Python 中,参数传递方式有两种主要形式:位置参数和关键字参数。通过使用包裹传递(packing)和解包传递(unpacking),可以灵活地处理任意数量的参数。
单星号 *
单星号 *
用于处理位置参数的打包和解包。
单星号打包
单星号 *
打包会将多个位置参数打包成一个 tuple 对象
1 | def sum_all(*args): |
单星号解包
单星号 *
解包用于将一个可迭代对象解包为位置参数
1 | def add(a, b, c): |
双星号 **
双星号 **
用于关键字参数的打包和解包
双星号打包
双星号 **
打包会将多个关键字参数打包成一个 dict 对象
1 | def print_info(**kwargs): |
双星号解包
双星号 *
解包用于将一个 dict 对象解包为关键字参数
1 | def information(name, age, city): |
混合使用 * 和 **
既有位置参数,又有关键字参数时,*args 必须作为位置参数的结尾,或者说 *args 之后的参数都必须是关键字参数。**kwargs 也必须作为关键字参数的结尾。
1 | def func(a, b, *args, c=10, **kwargs): |
keyword-only arguments
在 Python 中,函数参数列表中如果出现单独的单星号 *
而不是 *args
,这种用法的作用是强制要求后面的参数必须以关键字参数的形式传递。这种用法被称为 keyword-only arguments。
1 | def func(a, b, *, c, d): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文羊羽!