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 04 Python
浅谈python中set使用
Jun 30 Python
基于Python代码编辑器的选用(详解)
Sep 13 Python
Python3中类、模块、错误与异常、文件的简易教程
Nov 20 Python
Python的地形三维可视化Matplotlib和gdal使用实例
Dec 09 Python
Python模块文件结构代码详解
Feb 03 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
python对execl 处理操作代码
Jun 22 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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 mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
PHP高级编程实例:编写守护进程
2014/09/02 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
js获取某元素的class里面的css属性值代码
2014/01/16 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
Genny意大利官网:意大利高级时装品牌
2020/04/15 全球购物
节电标语大全
2014/06/23 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
工商局调档介绍信
2015/10/22 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android