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 相关文章推荐
Django 实现下载文件功能的示例
Mar 06 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
Feb 15 Python
Python闭包和装饰器用法实例详解
May 22 Python
pow在python中的含义及用法
Jul 11 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
python使用百度文字识别功能方法详解
Jul 23 Python
pytorch: Parameter 的数据结构实例
Dec 31 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
Django 删除upload_to文件的步骤
Mar 30 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
Python在线和离线安装第三方库的方法
Oct 31 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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php变量作用域的深入解析
2013/06/03 PHP
PHP修改session_id示例代码
2014/01/08 PHP
javascript getElementsByTagName
2011/01/31 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
自己动手封装一个React Native多级联动
2018/09/19 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
python Cartopy的基础使用详解
2020/11/01 Python
网络方面基础面试题
2012/11/16 面试题
境外导游求职信
2014/02/27 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
职务任命书范本
2014/06/05 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
自查自纠整改报告
2014/11/06 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python