python:什么时候可以拆开发电机?

它在引擎盖下如何工作?我不理解以下错误的原因:

>>> def f():
...     yield 1,2
...     yield 3,4
...
>>> *f()
  File "<stdin>", line 1
    *f()
    ^
SyntaxError: invalid syntax
>>> zip(*f())
[(1, 3), (2, 4)]
>>> zip(f())
[((1, 2),), ((3, 4),)]
>>> *args = *f()
File "<stdin>", line 1
  *args = *f()
    ^
SyntaxError: invalid syntax


最佳答案:

只有函数调用的参数列表(以及函数定义)支持*iterable语法。
在python 3.x中,您还可以在赋值的左侧使用它,如下所示:

[*args] = [1, 2, 3]

编辑:注意这里有plans to support the remaining generalisations

评论