Python中逗号的用法是什么?

时间:2016-09-27 19:25:48

标签: syntax

我看到了这样的Python语法:

l = []
l += 8,

l的结果是[8],显然是8之后的逗号更改整数可迭代,以便它可以添加列表。

没有逗号:

l = []
l += 8

错误为TypeError: 'int' object is not iterable

我在线搜索,但没有找到任何有用的这种语法解释。是否有任何文档可以引用Python中的逗号或逗号的任何其他用法?谢谢。

1 个答案:

答案 0 :(得分:0)

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

l=[]
l+=8,

此代码包含两部分 -

  1. 单个值后跟逗号会创建一个具有单个值的元组(可迭代),因此,

    l+=8,    ## implies l+=(8,)
    
  2. 扩充分配运算符+=调用就地方法__iadd__ 对于列表sq_inplace_concat实现为l,解释了列表和元组的串联。引自PEP 203: Augmented Assignments

      

    存在一些特殊的外壳来解释+和*的情况,这对于序列具有特殊含义:对于+,序列连接,如果C类型定义sq_concat或sq_inplace_concat,则不会强制执行。

    本质上,运算符表现为列表的extend()函数,并通过使用以下可迭代(在本例中为元组)扩展它来就地修改列表。

    l=[]     
    l+=8,    ## eventually implies l.extend((8,))
    print(l) ## [8]
    
  3. list.extend()函数只接受迭代的事实解释了错误TypeError: 'int' object is not iterable