博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中*和**的打包和解包
阅读量:5363 次
发布时间:2019-06-15

本文共 987 字,大约阅读时间需要 3 分钟。

python中的*和**,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的

一. 打包参数

* 的作用:在函数定义中,收集所有的位置参数到一个新的元组,并将这个元组赋值给变量args

1 >>> def f(*args): 2     print(args) 3     5 >>> f() 6 () 7 >>> f(1) 8 (1,) 9 >>> f(1, 2, 3, 4)10 (1, 2, 3, 4)11 >>>

** 的作用:在函数定义中,收集关键字参数传递给一个字典,并将这个字典赋值给变量kwargs

1 >>> def f(**kwargs):2     print(kwargs)3 4     5 >>> f()6 {}7 >>> f(a=1, b=2)8 {
'a': 1, 'b': 2}

二. 解包参数

* 的作用:在函数调用中,* 能够将元组或者列表解包成不同的参数

1 >>> def func(a, b, c, d): 2     print(a, b, c, d) 3  4      5 >>> args = (1, 2, 3, 4) 6 >>> func(*args) 7 1 2 3 4 8  9 >>> args = [1, 2, 3, 4]10 >>> func(*args)11 1 2 3 4

** 的作用:在函数调用中,**会以键/值的形式解包一个字典,使其成为独立的关键字参数

1 >>> def func(a, b, c, d):2     print(a, b, c, d)3 4     5 >>> kwargs = {
"a": 1, "b": 2, "c": 3, "d": 4}6 >>> func(**kwargs)7 1 2 3 4

 

 

举个栗子:

1 # 参数解包:将整个list当做参数传给函数 2 list = [1, 2, 4] 3   4   5 def add_fn(a, b, c): 6     return a + b + c 7   8   9 sum = add_fn(*list)10 print("参数解包:", sum)

 运行结果:

1 参数解包: 7

 

转载于:https://www.cnblogs.com/lmh001/p/9960300.html

你可能感兴趣的文章
【题解】luogu p2340 奶牛会展
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
[工具] Sublime Text 使用指南
查看>>
Web服务器的原理
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
HAL层三类函数及其作用
查看>>
web@h,c小总结
查看>>
Data Structure 基本概念
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>