Python: forにfileオブジェクトを渡すとどんな処理がされるか

Pythonをやってみて頭がこんがらがってます
これまでJavaとCしかやったことがないので明確な型を体が欲している気すらする

どうしてforにfileオブジェクトを渡していいのかわからなかったのでメモ
公式のリファレンスより(訳してくださった方々に感謝)


file.next()

ファイルオブジェクトはそれ自身がイテレータです。すなわち、 iter(f) は (f が閉じられていない限り) f を返します。 for ループ (例えば for line in f: print line) のようにファイルがイテレータとして使われた場合、 next() メソッドが繰り返し呼び出されます。ファイルが読み出しモードで開かれている場合、このメソッドは次の入力行を返すか、または、 EOF に到達したときに StopIteration を送出します (ファイルが書き込みモードで開かれている場合、動作は未定義です) 。ファイル内の各行に対する for ループ (非常によくある操作です) を効率的な方法で行うために、 next() メソッドは隠蔽された先読みバッファを使います。先読みバッファを使った結果として、 (readline() のような) 他のファイルメソッドと next() を組み合わせて使うとうまく動作しません。しかし、 seek() を使ってファイル位置を絶対指定しなおすと、先読みバッファは消去されます。