10

ボンネットの下でどのように機能しますか? 以下のエラーの理由がわかりません。

>>> 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
4

3 に答える 3

13

この*iterable構文は、関数呼び出しの引数リスト (および関数定義) でのみサポートされています。

Python 3.x では、次のように、代入の左側でも使用できます。

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

編集:残りの一般化をサポートする計画があることに注意してください。

于 2012-06-10T10:06:42.960 に答える
5

これを Python 3 で実行すると、よりわかりやすいエラー メッセージが表示されます。

>>> *f()
SyntaxError: can use starred expression only as assignment target
于 2012-06-10T10:06:53.067 に答える
1

*2 つのエラーは同じことを示しています。式の左側では使用できません。

これらの場合に何が起こると期待しているのかわかりませんが、それは有効ではありません。

于 2012-06-10T10:06:31.970 に答える