对python中的装包与解包实例详解


Posted in Python onAugust 24, 2019

*args和 **kwargs是常用的两个参数

*args:用于接受多余的未命名的参数,元组类型。

**kwargs:用于接受形参的命名参数,字典类型的数据。

可变参数args:

def fun(n, *args):
  print(n)
  print(args)   # 未拆包
  print(*args)  # 进行拆包
fun(1,2,3,4)

结果:

1
(2, 3, 4)
2 3 4

形参中的*args是接受数据的args,它是一个元组,把传入的数据放进args元组中。

函数中的args仍然是元组, *args就是将元组的数据进行拆包,一开始输入的形式。

关键字参数**kwargs

def fun(**kwargs):
  print(kwargs)    # 未拆包
  print(*kwargs) # 进行拆包
fun(a=1, b=2)

结果:

{'a': 1, 'b': 2}
a b

*args用来接受多余的未命名参数, **kwargs是用来接受命名参数。

装包的意义就是把未命名的参数和命名的参数放在元组或字典中。

解包

上面介绍了args, kwargs的装包作用,起到作用的是、 这两个参数。

1. 解包的意义就是将传递给函数的一个列表,元组,字典,拆分成独立的多个元素然后赋值给函数中的参变量。

2. 解压字典有两种解发,一种用*解的只有key,一种用**解的有key,value。但是这个方法**只能在函数定义中使用。

def fun(*args, **kwargs):
  for arg in args:
    print(arg)
  for k, v in kwargs.items():
    print(k, v)
  print('-'*50)
fun(a, c)  # 参数都赋值给args,并没有kwargs的参数
fun(*a, *c)   # 解压的参数都赋值给args 等价为 1, 2, 3, 'a', 'b', 'c'
fun(*a, **c)  # a解压给args,c解压给kwargs 等价为 1, 2, 3, 'a'=1, 'b'=2, 'c'=3

结果:

[1, 2, 3]
{'a': 1, 'b': 2, 'c': 3}
--------------------------------------------------
1
2
3
a
b
c
--------------------------------------------------
1
2
3
a 1
b 2
c 3

问题:

在传入参数时,可变参数(*)之前不能指定参数名

def myfun(a, *b):
  print(a)
  print(b)
myfun(a=1,2,3,4)


  myfun(a=1,2,3,4)
       ^
SyntaxError: positional argument follows keyword argument

2.函数传入实参时,可变参数(*)之后的参数必须指定参数名,否则就会被归到可变参数之中

def myfun(a, *b, c=None):
  print(a)
  print(b)
  print(c)
myfun(1,2,3,c=4)

1
(2, 3)
4

3.一个函数想要使用时必须明确指定参数名,可以将所有参数都放在可变参数之后

def myfun(*, a, b):
  print(a)
  print(b)
myfun(a=1, b=2)

4.关键字参数都只能作为最后一个参数,前面的参数按照位置赋值还是名称赋值都可以

def myfun(a, *b, c, **d):
  print(a)
  print(b)
  print(c)
  print(d)
myfun(1, 2, w=6, c=3, d=4, e=5)   # 记住可变参数(*)之前不能指定参数名

1
(2,)
3
{'w': 6, 'd': 4, 'e': 5}

以上这篇对python中的装包与解包实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
Oct 14 Python
python实现支付宝转账接口
May 07 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
Python3进制之间的转换代码实例
Aug 24 #Python
Python实现朴素贝叶斯的学习与分类过程解析
Aug 24 #Python
FFrpc python客户端lib使用解析
Aug 24 #Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 #Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 #Python
用Python爬取QQ音乐评论并制成词云图的实例
Aug 24 #Python
python解释器spython使用及原理解析
Aug 24 #Python
You might like
PHP生成带有雪花背景的验证码
2006/10/09 PHP
一个程序下载的管理程序(二)
2006/10/09 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
最短的IE判断代码
2011/03/13 Javascript
JS模块与命名空间的介绍
2013/03/22 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
jquery插件bootstrapValidator表单验证详解
2016/12/15 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
你应该知道的几类npm依赖包管理详解
2017/10/06 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
python提取字典key列表的方法
2015/07/11 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Python对多属性的重复数据去重实例
2018/04/18 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
中班幼儿评语大全
2014/04/30 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
教你怎么用python selenium实现自动化测试
2021/05/27 Python
Java基础之this关键字的使用
2021/06/30 Java/Android