python 星号(*)的多种用途


Posted in Python onSeptember 21, 2020

结论

概括的来说,就是对修饰的变量进行拆分, 对修饰的形式参数进行参数聚集。
单*号,将被修饰的变量按元素方式拆分, 对修饰的形式参数进行参数聚集。
双**号,将被修饰的变量按键值对进行拆分, 对修饰的形式参数进行参数聚集。

修饰实例变量时

  • 作用: 讲被修饰的实例变量或者可迭代对象进行拆分
def func3(a, b, c):
  print("param a is {}, param b is {}, param c is {}".format(a, b, c))


if __name__ == '__main__':
  arr1 = [1, 2, 3]
  print(arr1, sep='\t') # [1, 2, 3]\t 正常输出
  print(*arr1, sep='\t') # 1\t2\t3 每个数字中间以\t分割

  arr2 = [[1, 2, 3], [3, 4, 5], [5, 6, 7]]
  print(list(zip(*arr2))) # [(1, 3, 5), (2, 4, 6), (3, 5, 7)] 二维数组的行转列

  dictionary = {'a': 1, 'b': 2, 'c': 3}
  print(dictionary, sep='\t') # {'a': 1, 'b': 2, 'c': 3}\t 正常输出
  print(*dictionary, sep='\t') # a\tb\tc\t 每个字母中间以\t分割


  print(func3(**dictionary)) # param a is 1, param b is 2, param c is 3

比较使用和不使用*号后产生的结果就可以发现,单*号将可迭代对象进行了拆分,按单个元素方式依次将数据传进方法。
配合其他方法使用可以优雅的完成矩阵的行转列操作。

双**号的使用,是将变量对象拆分成键值对的形式,所以只有dict类型可以使用。
注意上面的func3,他需要三个形参,但是我们只传入**dict_obj, 就完成了功能。

可迭代对象有:list, dict, tuple, generator, iterator

出现在方法的形式参数位置

  • 作用: 放在参数列表的末尾, 作为不定长的参数列表的形参接受对象。 (可以类比Java的可变参数列表)
def func1(*args):
  print("type", type(args)) # type <class 'tuple'>
  print("all arguments: ", args) # all arguments: (1, 2, 3)
  print("second argument: ", args[1]) # second argument: 2


def func2(**kw):
  print("type", type(kw)) # type <class 'dict'>
  print("all arguments: ", kw) # all arguments: {'a': 1, 'b': 2, 'c': 3}
  print("second argument: ", kw['a']) # second argument: 1


if __name__ == '__main__':
  a, b, c = 1, 2, 3

  func1(a, b, c)
  func2(a=a, b=b, c=c)

尽管函数func1的形参只有一个,但被传递三个参数,程序还是可以正常运行。
因为*args将三个参数以tuple形式存储,作为一个整体传递给方法func1。

同理,func2的**kw形参将传入的三个参数压成一个dict进行使用。

具体实验代码可以通过Github获得。

以上就是python 星号(*)的多种用途的详细内容,更多关于python 星号(*)的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python去掉字符串中空格的方法
Mar 11 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
tensorflow获取变量维度信息
Mar 10 Python
python将秒数转化为时间格式的实例
Sep 16 Python
Python3实现腾讯云OCR识别
Nov 27 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
简单了解Python matplotlib线的属性
Jun 29 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
python关闭占用端口方式
Dec 17 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
May 29 Python
自学python用什么系统好
Jun 23 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 #Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
Sep 21 #Python
python map比for循环快在哪
Sep 21 #Python
通过实例解析Python文件操作实现步骤
Sep 21 #Python
python Paramiko使用示例
Sep 21 #Python
Python引入多个模块及包的概念过程解析
Sep 21 #Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 #Python
You might like
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
python路径的写法及目录的获取方式
2019/12/26 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
青年教师培训方案
2014/02/06 职场文书
入党综合考察材料
2014/06/02 职场文书
学习作风建设心得体会
2014/10/22 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
golang slice元素去重操作
2021/04/30 Golang
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS