对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抓取百度首页的方法
May 19 Python
星球大战与Python之间的那些事
Jan 07 Python
使用python实现生成用户信息
Mar 20 Python
python 获取一个值在某个区间的指定倍数的值方法
Nov 12 Python
python中实现控制小数点位数的方法
Jan 24 Python
python学习开发mock接口
Apr 28 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python目录和文件处理总结详解
Sep 02 Python
Python发送邮件的实例代码讲解
Oct 16 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
详解Python中的Lock和Rlock
Jan 26 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 从数据库提取二进制图片的处理代码
2009/09/09 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php pthreads多线程的安装与使用
2016/01/19 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript遍历控件实例详细解析
2014/01/10 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
sails框架的学习指南
2014/12/22 Javascript
jquery中checkbox使用方法简单实例演示
2015/11/24 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
Python匿名函数及应用示例
2019/04/09 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
python os模块在系统管理中的应用
2020/06/22 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
平面设计师的工作职责
2013/11/21 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
环卫工作汇报材料
2014/10/28 职场文书
爱心捐款感谢信
2015/01/20 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书