Python-エッセンシャルー5
catch-allアンパック
アンパックの基本的な制限として、前もってアンパックするシーケンス
の長さが必要です。リストの先頭の2つをアンパックしようとしたら、
実行時にエラーが生じる。
初心者は、このような状況ではインデックスやスライスを使いたくなるで
しょう。これは動作するが、インデックスやスライスで読み難い。
こような時、アスタリスク付きの引数によるcatch-allアンパックが
あります。
この構文では、アンパック代入において、他のアンパックパターンに
合致しない残り全部を受け取ることができます。
このコードは短くて読みやすく、行間で同期しなければならない、
境界値エラーが生じる脆弱性が無い
アスタリスク付きの引数はどこの位置にも書けるので、スライスで
いつでもcatch-allアンパックの恩恵を受け取ることができる。
注意事項
アスタリスク付の式を含むアンパック代入では、少なくとも
1つの指定部分が必要です。そうで無いと、SyntaxEroorになります
一つのアンパックパターンの中に複数のアスタリスク付きの式を指定
することもできません。
ただし、アンパックされる複数のレベルがある構造の中の異なる部分に
対してcatch-allアンパックをするのなら、複数のアスタリスクがあっても
構いません。