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实现数独算法实例
Jun 09 Python
Python实现截屏的函数
Jul 26 Python
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
Sep 18 Python
Python2中文处理纪要的实现方法
Mar 10 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
详解Django-restframework 之频率源码分析
Feb 27 Python
flask应用部署到服务器的方法
Jul 12 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
没编程基础可以学python吗
Jun 17 Python
python tqdm实现进度条的示例代码
Nov 10 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操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
javascript 动态生成私有变量访问器
2009/12/06 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
Jquery api 速查表分享
2015/01/12 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
2017/01/04 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python实现五子棋游戏
2019/06/18 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
python实现图片横向和纵向拼接
2020/03/05 Python
如何真正的了解python装饰器
2020/08/14 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
活动志愿者自荐信
2014/01/27 职场文书
公司任命书范本
2014/06/04 职场文书
授权委托书怎么写
2014/09/25 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
Python机器学习之逻辑回归
2021/05/11 Python