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写的Tkinter程序屏幕居中方法
Mar 10 Python
Python编码类型转换方法详解
Jul 01 Python
matplotlib设置legend图例代码示例
Dec 19 Python
简单谈谈python基本数据类型
Sep 26 Python
对python 读取线的shp文件实例详解
Dec 22 Python
详解python 爬取12306验证码
May 10 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
Python的scikit-image模块实例讲解
Dec 30 Python
python 如何获取页面所有a标签下href的值
May 06 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
解析php框架codeigniter中如何使用框架的session
2013/06/24 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
php实现文件上传基本验证
2020/03/04 PHP
node.js中的console.dir方法使用说明
2014/12/10 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
JS全角与半角转化实例(分享)
2017/07/04 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
详解Python传入参数的几种方法
2019/05/16 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
css3弹性盒子flex实现三栏布局的实现
2020/11/12 HTML / CSS
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
实用的简历自我评价
2014/03/06 职场文书
医学检验专业自荐信
2014/09/18 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
朋友离别感言
2015/08/04 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
Java实现注册登录跳转
2022/06/16 Java/Android