5

私はPythonに挑戦していて、アスタリスクに関して質問がありました。それらが関数呼び出しの引数に使用されることは知っていますが、関数カードの外でそれらを使用するコードのスニペットを見たことがあります (たとえば、5 つのグレードのタプルで、それらを次のような変数にアンパックします:

first, *middle, last = grades

関数呼び出しの引数からこのコンテキスト/コンテキストでアスタリスクを使用しようとすると、インタープリターで無効な構文が取得されます。ここで何か不足していますか?

4

1 に答える 1

11

Python 3 では、 1 つのワイルドカードをサポートする拡張タプル アンパックが追加されました。 PEP 3132を参照してください。

*start, tail = ...
head, *middle, tail =  ...

割り当てステートメントのリファレンス ドキュメントを参照してください。

ターゲット リストに、「スター付き」ターゲットと呼ばれる、アスタリスクで始まるターゲットが 1 つ含まれている場合: オブジェクトは、少なくともターゲット リスト内のターゲット数から 1 を引いた数の項目を持つシーケンスである必要があります。シーケンスの最初の項目は、左から右に、スター付きターゲットの前のターゲットに割り当てられます。シーケンスの最後の項目は、スター付きターゲットの後のターゲットに割り当てられます。次に、シーケンス内の残りのアイテムのリストがスター付きターゲットに割り当てられます (リストは空でもかまいません)。

割り当ての左側 (ターゲット リスト) でのアスタリスクの使用は、Python 2 の構文エラーです。

于 2013-06-11T13:53:57.187 に答える