Python 逗号在增广列表赋值中的用法是什么?
我看到一个Python语法如下:Python 逗号在增广列表赋值中的用法是什么?,python,syntax,Python,Syntax,我看到一个Python语法如下: l = [] l += 8, l的结果是[8],显然8后面的逗号改变了整数iterable,以便可以与列表相加 没有逗号: l = [] l += 8 它将有一个错误TypeError:“int”对象不可编辑 我在网上搜索过,但没有找到任何关于这种语法的有用解释。是否有任何文档可以参考Python中的逗号或逗号的任何其他用法?这是很旧的,但我最近试图理解相同的语法,以下是我发现的: l=[] l+=8, 此代码有两部分- 一个值后跟一个逗号将创建一个具有单
l = []
l += 8,
l
的结果是[8]
,显然8
后面的逗号改变了整数iterable,以便可以与列表相加
没有逗号:
l = []
l += 8
它将有一个错误TypeError:“int”对象不可编辑
我在网上搜索过,但没有找到任何关于这种语法的有用解释。是否有任何文档可以参考Python中的逗号或逗号的任何其他用法?这是很旧的,但我最近试图理解相同的语法,以下是我发现的:
l=[]
l+=8,
此代码有两部分-
l+=8, ## implies l+=(8,)
+=
调用就地方法\uuuuu iadd\uuuu
对于列表l
,实现为sq\u inplace\u concat
,解释列表和元组的连接。引自:
存在一些特殊的大小写来解释+和*,它们对序列有特殊的意义:对于+,序列连接,如果C类型定义sq_concat或sq_inplace_concat,则不会执行强制
从本质上讲,操作符的行为类似于列表的extend()
函数,并通过使用以下iterable(在本例中为tuple)扩展列表来修改列表
TypeError:“int”对象不可iterable
l=[]
l+=8, ## eventually implies l.extend((8,))
print(l) ## [8]