Python 2.6 でnext
関数が導入されました。
なぜこれが必要だったのですか?obj.next()
の代わりにいつでも入力できnext(obj)
ます。
後者の方が多いpythonic
ですか?
PEP 3114は、この変更について説明しています。動機についての抜粋:
この PEP は、
next
メソッドの名前を に変更することを提案して__next__
います。これは、メソッドが言語レベルのプロトコルの一部として暗黙的に呼び出される Python の他のすべてのプロトコルと一致し、メソッドnext
を呼び出すために という名前の組み込み関数を導入すること__next__
と一致しています。他のプロトコルが明示的に呼び出される方法。
より興味深い詳細については、必ずこの PEP をお読みください。
ビルトインを使用する理由については、Python 3 でこのメソッドがなくなったことが 1 つの正当な理由です。そのため、移植性のために、できるだけ早くビルトインの使用を開始することをお勧めします。next
next
next
そのin python 3)メソッドを呼び出して、イテレータから次の項目を取得します。デフォルトが指定されている場合、イテレータが使い果たされた場合は返され、そうでない場合は発生します。
next()
(__next__()
StopIteration
あなたはdefault
オプションを取得します。
明らかな追加機能とは別に、ジェネレータ式と一緒に使用すると見栄えも良くなります。比較
(x for x in lst if x > 2).next()
に
next(x for x in lst if x > 2)
後者は、Python の残りのスタイルである IMHO とより一貫性があります。