注意: * (starred expression)不可以单独使用

正文:

Python 星号表达式(starred expression)

*expression的作用

1、用于参数传递

出现在函数中,*args用于将传入的可迭代参数解析出来,并存入到args中

def f(*args, **kwargs):print(args)print(kwargs)
>>> def f(a, b, c):
...   print a, b, c
...
>>> f(1, 2, 3)
1 2 3
>>> f(*['a', 'b', 'c'])
a b c
>>> f(3, *[1, 2])
3 1 2

2、用于unpacking可迭代的变量

将序列中的部分内容打包至一个列表中

  • example 1
python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a, *b, c = range(10)
>>> a
0
>>> b
[1, 2, 3, 4, 5, 6, 7, 8]
>>> c
9
  • example 2
>>> record = ('alice', 50, 1322,45, (12, 18, 2018))
>>> name, *_1, (*_2, year) = record
>>> name
'alice'
>>> _1
[50, 1322, 45]
>>> _2
[12, 18]
>>> year
2018
  • example 3
>>> for a, *b in [(1,2,3,4,5), ('a', 'b', 'c', 'hehe')]:
...     print(b, type(b))
...
[2, 3, 4, 5] <class 'list'>
['b', 'c', 'hehe'] <class 'list'>
  • 递归求和
>>> def sum(items):
...   head, *tail = items
...   return head + sum(tail) if tail else head
...
>>> sum([1, 3, 5, 7, 9])
25

注意:星号表达式(*expressoin)不可单独使用

# 以下实验结果在python3.x中
>>> *a = range(5)File "<stdin>", line 1
SyntaxError: starred assignment target must be in a list or tuple
>>> *a, = range(5)
>>> a
[0, 1, 2, 3, 4]>>> a = *range(5)File "<stdin>", line 1
SyntaxError: can't use starred expression here
>>> a = *range(5),
>>> a = , *range(5)File "<stdin>", line 1a = , *range(5)^
SyntaxError: invalid syntax

3、语法参考

PEP 3132 – Extended Iterable Unpacking | peps.python.orghttps://www.python.org/dev/peps/pep-3132/PEP 448 – Additional Unpacking Generalizations | peps.python.orghttps://www.python.org/dev/peps/pep-0448/

【笔记】python 中的 starred expression(星号表达式)功能:参数传递;用于unpacking可迭代的变量相关推荐

  1. Python中的三目运算符(三元表达式)

    Python中的三目运算符(三元表达式) 一般支持三目运算符的语言(如C语言)的语法格式一般是这样的: 判断条件(返回布尔值)?为真时的结果:为假时的结果 比如: x = x%2==1 ? x+1:x ...

  2. python中case的用法_如何在Python中使用TestCase实现一个断言功能

    如何在Python中使用TestCase实现一个断言功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题. Python TestCase断 ...

  3. python模拟浏览器模块_在Python中使用mechanize模块模拟浏览器功能

    知道如何快速在命令行或者python脚本中实例化一个浏览器通常是非常有用的. 每次我需要做任何关于web的自动任务时,我都使用这段python代码去模拟一个浏览器. import mechanize ...

  4. [转载] Python中的解析式和生成器表达式

    参考链接: Python | 生成器表达式 解析式和生成器表达式 列表解析List Comprehension 语法 [返回值 for 元素 in 可迭代对象 if 条件]使用中括号[],内部是for ...

  5. Python中的yield关键字及表达式、生成器、生成器迭代器、生成器表达式详解

    文章目录 1. yield关键字及表达式.生成器.生成器迭代器.生成器表达式 1.1 yield关键字及表达式(yield expression) 1.1.1 yield关键字 1.1.2 yield ...

  6. python中参数(带星号的参数)

    python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...

  7. python中、文件最重要的功能是( )和接收数据_Python基础语法14个知识点大串讲

    来源:Python数据之道 Python基础语法大串讲Python 是一门面向对象的编程语言,相信这篇文章对于初学者而言应该会有一个比较大的帮助,下面我们将 Python 中常用的基础语法和函数做了一 ...

  8. python中eval函数和int函数功能一样_python中eval与int的区别浅析

    python中eval和int的区别是什么?下面给大家介绍一下: 1.eval()函数 eval()能够以Python表达式的方式解析并执行字符串,并将返回结果输出.eval()函数将去掉字符串的两个 ...

  9. python中、文件最重要的功能是( )和接收数据_170道面试题,python让你前尘毋庸

    所有题目 语言特性 1.谈谈对 Python 和其他语言的区别 2.简述解释型和编译型编程语言 3.Python 的解释器种类以及相关特点? 4.说说你知道的Python3 和 Python2 之间的 ...

最新文章

  1. jpa 自定义sql if_常用SQL语句大全总结
  2. Apache Hadoop 启动报错:masternode:ssh: connect to host master port 22: Connection timed out 总结
  3. php no route to host,java.net.NoRouteToHostException: No route to host解决方法
  4. [数据结构与算法] : 栈的链式实现
  5. php 实现一致性哈希,PHP一致性哈希实现。。
  6. 英文标题大写格式化 在线网站
  7. php 延迟输出,PHP循环;如何打印每个结果并将其延迟一秒钟,然后再回显另一个结果?...
  8. 电脑更新后,设备管理器未知USB设备,并且蓝牙无法使用
  9. 一步快速将Smartform转成生成PDF文件
  10. C++ MFC与三菱PLC通讯
  11. 广西大学计算机学院录取名单,西南大学计算机与信息科学学院关于2021年硕士研究生拟录取名单的公示(不含推免生)...
  12. 二叉树期CRR权定价模型-python
  13. 解决“各种”软件图标显示错误问题
  14. CVR预估论文阅读笔记:一次性解决三大难题
  15. RT-Thread内核-__rt_ffs函数
  16. C盘系统文档迁移工具,一键解决重装,C盘爆满
  17. 卡内基沟通与人际关系
  18. 转:创业之路“一生悬命”---只有偏执狂才能生存
  19. SMU激活函数讲解及代码实现
  20. 万家杨柳青烟里:B+、B- 树的应用场景

热门文章

  1. 使用vue create 创建项目时的翻译
  2. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)
  3. Java核心特性之反射机制
  4. 目前最先进的神经网络算法,神经网络算法发展
  5. 机器学习VS动量、反转效应,量化交易1
  6. Matlab调用NI-DAQmx出现“错误使用 mex XXX skipping incompatible XXX searching for -lNIDAQmx“
  7. 普洛斯最新中国收益基金募集资产管理规模76亿元;喜力成为2023年一级方程式合作伙伴 | 美通企业日报...
  8. 曲速未来 披露:由macOS NFS客户端中的缓冲区溢出引起的内核RCE
  9. 综合应急平台-数据库系统
  10. 自动驾驶/智能网联在高速公路自动驾驶货车示范应用现状