python之*的魔性用法
1. *在函数中的作用
聚合
在函数定义时聚合
def eat(args):
print('我请你吃:',args)
eat('蒸羊羔儿')
# 输出结果
# 我请你吃: 蒸羊羔儿
打散
在函数执行时打散
*arg打散的是 str tuple list
'alex' [1, 2, 3, 4] ('武sir', '太白', '女神',) 由这种打散变成('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
**wkargs打散的是 dict 两个字典变一个
func(中的两个表示只能打散字典,且打散后的只能传给kwargs)
用法:
dic1 = {'name':'太白','sex':'男'}
dic2 = {'age': 73,'hobby': '吹'}
l1 = [1,2,3]
def func(**kwargs):
print(args)
print(kwargs)
func(**dic1,**dic2)
打散目的
如果是传给*args就是将多个列表,或者字符,或者元组聚合成一个大的元组
如果打散后的是传给**kwargs就是将多个字典聚合一个大字典
s1 = 'alex'
l1 = [1, 2, 3, 4]
tu1 = ('武sir', '太白', '女神',)
def func(*args):
print(args)
func(*s1,*l1,*tu1)
# 输出结果
('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
# 对比:
以前是:'alex',[1, 2, 3, 4],('武sir', '太白', '女神',)
打散后是: ('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
练习题
l1 = [1, 2, 3]
l2 = ['太白', 'wusir', '景女神']
def func(*args,**kwargs):
print(args)
print(kwargs)
# func(l1,l2)
# func(*l1,*l2) # 当函数的执行时:*iterable 代表打散。
func(*[1, 2, 3],*(11,22),*'fdsakl')
dic2 = {'age': 73,'hobby': '吹'}
l1 = [1,2,3]
def func(*args,**kwargs):
print(args)
print(kwargs)
func(*l1,**dic2)
在函数以外还可以这样打散
分别赋值
a,b = (1,2)
print(a, b)
# 输出结果
1 2
a,*b = (1, 2, 3, 4,)
print(a, b)
# 输出结果
1 [2, 3, 4]
*rest,a,b = range(5)
print(rest, a, b)
# 输出结果
[0, 1, 2] 3 4
print([1, 2, *[3, 4, 5]])
# 输出结果
[1, 2, 3, 4, 5]
一句话总结
*arg打散的是 str tuple list
'alex' [1, 2, 3, 4] ('武sir', '太白', '女神',) 由这种打散变成('a', 'l', 'e', 'x', 1, 2, 3, 4, '武sir', '太白', '女神')
**wkargs打散的是 dict 两个字典变一个
用法
dic2 = {'age': 73,'hobby': '吹'}
l1 = [1,2,3]
def func(*args,**kwargs):
print(args)
print(kwargs)
func(*l1,**dic2)
python之*的魔性用法的更多相关文章
- python 中del 的用法
python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以帮助深入理解python的内存方面的问题. python的del不同于C的free和C++的delete. 由于pyth ...
- Python多进程并发(multiprocessing)用法实例详解
http://www.jb51.net/article/67116.htm 本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Pyt ...
- Python dictionary 字典 常用法
Python dictionary 字典 常用法 d = {} d.has_key(key_in) # if has the key of key_in d.keys() ...
- 【python】 del 的用法
转自 https://blog.csdn.net/love1code/article/details/47276683 python中的del用法比较特殊,新手学习往往产生误解,弄清del的用法,可以 ...
- Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)
Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- [转]使用python来操作redis用法详解
转自:使用python来操作redis用法详解 class CommRedisBase(): def __init__(self): REDIS_CONF = {} connection_pool = ...
- python之模块py_compile用法(将py文件转换为pyc文件)
# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...
- python format()函数的用法
Python format() 函数的用法 复制自博主 chunlaipiupiupiu 的博客,如有侵权,请联系删除 python中format函数用于字符串的格式化 通过关键字 1 print(' ...
随机推荐
- Navicat导出数据库结构为PDF
1.选中需要导出的数据表,右键选择 打印表 2.点击左上角 打印,选择标红的打印机,点击确定,然后键入文件名,确定之后会生成后缀为xps的文件 3.然后打开这个网址(https://xpstopdf. ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- 关于APICloud使用心得(原创)
从最开始接触APICloud到现在已经有一段时间了.现在想说说自己对于APICloud开发移动端的想法,既有利又有弊. 以下都是我个人的观点. 先说优点吧: 1.APICloud平台文档.视频较多,很 ...
- [转] iOS开发-搜索栏UISearchBar和UISearchController
原文网址: http://www.cnblogs.com/xiaofeixiang/p/4273620.html?utm_source=tuicool iOS中UISearchDisplayContr ...
- P1291-添加括号(区间dp)
题目背景 给定一个正整数序列a(1),a(2),...,a(n),(1<=n<=20) 不改变序列中每个元素在序列中的位置,把它们相加,并用括号记每次加法所得的和,称为中间和. 例如: 给 ...
- mysql--浅谈多表查询1
这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师. 依赖软件:mysql5.6 系统环境:win 连接查询 在谈连接查询之前我们需要对数学上的笛卡尔积有一定的了解 现在有两个集合m和n ...
- 搭建yum源
五.保留缓存rpm包, 修改配置文件,将最新的rpm包下载到本地并保存. 3) 使用yum命令安装httpd软件包 六.制作yum仓库 1) 自定义yum仓库:createrepo 安 ...
- Hive进阶_内置函数
Hive数学函数 round : 四舍五入 ceil : 向下取整 floor : 向上取整 ),),),),); Hive字符函数 select lower('Hello World'), uppe ...
- js中 前台日期时间使用方法总结
(1)JQuery EasyUI 1.4.2 版本中的 DateTimeBox(时间日期输入框) 参考本地帮助文档. (2)jquery.datetimepicker 单独使用的包 只 ...
- [RDL]多级占比做法
先添加[店铺],然后,对[店铺]添加父组,记得勾选[添加组头] 然后直接删除[区域2],[省份2] 添加到[店铺列] [区域]行,生意额占比表达式:=sum(Fields!生意额.Value)/Sum ...