0
with open('some.txt', 'r') as input_file:
    #read the file starting from the second line.
    for line in input_file:
        print line

コードは一目瞭然です。next()しかし、メソッドを使用するのは初めてだったので、メソッドに関するドキュメントを読んだだけでは、なぜ機能するのかわかりませんでした。公式ドキュメントでは、この方法を次のように説明しています。

next(iterator[, default])

next() メソッドを呼び出して、反復子から次の項目を取得します。default が指定されている場合、イテレータが使い果たされた場合はそれが返され、それ以外の場合は StopIteration が発生します。

このメソッドを実行すると、メソッドが呼び出されるオブジェクトの 2 番目の要素にイテレータが移動するという部分の説明が不足していませんか?

4

2 に答える 2

1

一般化されたポインターである C++ などのイテレーターに慣れているようです。Python の反復子には、「逆参照」操作と「前進」操作がありません。彼らは「次のものを得る」を持っています。「次のもの」がイテレータから出てきた前のものの後のものであるという事実は、それが次のものであるという事実によって暗示されます。

ドキュメントには、操作によって反復子の状態が変更されることが明示的に記載されている場合があります。これはより明確になる可能性がありますが、単語数と情報の繰り返しにはトレードオフがあります。メソッドへのリンクをたどるとnext、完全なイテレータ プロトコルを見ることができます。これには特に__iter__andしか含まnextれていないため、イテレータを進めるための別の操作がないことは明らかです。ただし、そのドキュメントでは、それが反復子を進めることを明示的に述べてません。next

于 2013-09-11T00:26:26.117 に答える