对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的11道基本面试题
Apr 01 Python
对Python中9种生成新对象的方法总结
May 23 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
python pandas生成时间列表
Jun 29 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
动态设置django的model field的默认值操作步骤
Mar 30 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
Jun 03 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
详解Python requests模块
Jun 21 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
用Vue编写抽象组件的方法
2019/05/06 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
用Pygal绘制直方图代码示例
2017/12/07 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
html5移动端价格输入键盘的实现
2019/09/16 HTML / CSS
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
芭比波朗加拿大官方网站:Bobbi Brown Cosmetics CA
2020/11/05 全球购物
农村婚礼主持词
2014/03/13 职场文书
社区反邪教工作方案
2014/06/16 职场文书
生活部的活动方案
2014/08/19 职场文书
公务员考察材料
2014/12/23 职场文书
语文教师个人工作总结
2015/02/06 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
JS代码编译器Monaco使用方法
2021/06/11 Javascript