对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的垃圾回收机制深入分析
Jul 16 Python
Python创建日历实例
Aug 21 Python
Python实现的递归神经网络简单示例
Aug 11 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
python如何统计序列中元素
Jul 31 Python
python最长回文串算法
Jun 04 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Django配置Bootstrap, js实现过程详解
Oct 13 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
python 批量压缩图片的脚本
Jun 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在文件指定行中写入代码的方法
2012/05/23 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
理解javascript对象继承
2016/04/17 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JS判断时间段的实现代码
2017/06/14 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
Python程序语言快速上手教程
2012/07/18 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python使用udp实现聊天器功能
2018/12/10 Python
python实现小球弹跳效果
2019/05/10 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python自定义时钟类、定时任务类
2021/02/22 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
Python中常见的数制转换有哪些
2020/05/27 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
学生抄袭作业的检讨书
2014/10/02 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python