Python 逗号在增广列表赋值中的用法是什么?

Python 逗号在增广列表赋值中的用法是什么?,python,syntax,Python,Syntax,我看到一个Python语法如下: l = [] l += 8, l的结果是[8],显然8后面的逗号改变了整数iterable,以便可以与列表相加 没有逗号: l = [] l += 8 它将有一个错误TypeError:“int”对象不可编辑 我在网上搜索过,但没有找到任何关于这种语法的有用解释。是否有任何文档可以参考Python中的逗号或逗号的任何其他用法?这是很旧的,但我最近试图理解相同的语法,以下是我发现的: l=[] l+=8, 此代码有两部分- 一个值后跟一个逗号将创建一个具有单

我看到一个Python语法如下:

l = []
l += 8,
l
的结果是
[8]
,显然
8
后面的逗号改变了整数iterable,以便可以与列表相加

没有逗号:

l = []
l += 8
它将有一个错误
TypeError:“int”对象不可编辑


我在网上搜索过,但没有找到任何关于这种语法的有用解释。是否有任何文档可以参考Python中的逗号或逗号的任何其他用法?

这是很旧的,但我最近试图理解相同的语法,以下是我发现的:

l=[]
l+=8,
此代码有两部分-

  • 一个值后跟一个逗号将创建一个具有单个值的元组(iterable),因此

    l+=8,    ## implies l+=(8,)
    
  • 增广赋值运算符
    +=
    调用就地方法
    \uuuuu iadd\uuuu
    对于列表
    l
    ,实现为
    sq\u inplace\u concat
    ,解释列表和元组的连接。引自:

    存在一些特殊的大小写来解释+和*,它们对序列有特殊的意义:对于+,序列连接,如果C类型定义sq_concat或sq_inplace_concat,则不会执行强制

    从本质上讲,操作符的行为类似于列表的
    extend()
    函数,并通过使用以下iterable(在本例中为tuple)扩展列表来修改列表

  • list.extend()函数只接受iterables这一事实解释了错误
    TypeError:“int”对象不可iterable

    l=[]     
    l+=8,    ## eventually implies l.extend((8,))
    print(l) ## [8]