当前位置: 代码迷 >> python >> 为什么python shell只允许`print`输出unpacked-python
  详细解决方案

为什么python shell只允许`print`输出unpacked-python

热度:37   发布时间:2023-06-19 09:28:16.0

基本上我的头衔是问题:

例:

>>> l=[1,2,3]
>>> *l
SyntaxError: can't use starred expression here
>>> print(*l)
1 2 3
>>> 

这是为什么???

因为它相当于与列表相关的位置控制,所以当你没有在某个地方调用它可以接受所有的参数时,这是没有意义的,因为没有地方可以放置参数

FX

print(*[1,2,3])
# is the same as
print(1,2,3)

*[1,2,3]
#is the same as - and do not think of it as a tuple
1,2,3 # here how ever that makes it a tuple since tuples not defined by the parenthasies, but the point is the same

然而,这有一个轻微的例外,它在python 3.5中的元组,列表,集合和字典中,但这是一个例外,也可以用于分配剩余的值,python如何看到你不做这些。

编辑我删除了我的答案,因为我意识到只有最后一部分是错误的。

我认为这实际上是一个关于理解*l或一般*ListLikeObject

关键点是*ListLikeObject不是单独的有效表达式。 这并不意味着“哦,请打开列表”。

一个例子可以是2 *[1, 2, 3] (众所周知,它将输出[1, 2, 3, 1, 2, 3] )。 如果个人*[1, 2, 3]有效,它应该输出什么? 它是否应该引发运行时异常,因为计算的表达式是2 1 2 3并且它是无效的(某种程度上除以0)?

所以基本上, *[1, 2, 3]只是一种语法糖,可以帮助你传递参数。 您无需手动解压缩列表,但解释器会为您执行此操作。 基本上它仍然传递三个参数而不是一个其他元组的元组。

  相关解决方案