Python for line in file - считывание построчно (по одной строке)

строка:

for line in file 

позволяет читать файл построчно - так как file - это генератор уже организованный в виде множества строк.

Пример использование генератора можно посмотреть здесь

Обсуждение:

Каков механизм работы строки?

for line in file

в контексте:

def read_input(file):
    for line in file:
        # split the line into words
        yield line.split()

?
Пример использования:

data = read_input(sys.stdin)

line - это просто переменная?
почему файл разбивается именно на строки (как оказывается возможной итерация по строкам в функции read_input )?

humanmashine's picture

file - это генератор. Особые конструкции в Python. Line с помощью итератора получает строки (строки разбиваются как мы привыкли, символом переноса). Особенность генераторов в том, что они экономят ресурсы машины, мы не читаем и не храним сразу весь файл, а только по строкам.
На хабре есть статья про yield - это один из механизмов создания генераторов, полезно чтобы понять: http://habrahabr.ru/post/132554/
В книге Марка Лутца "Изучаем Python 4-е издание" есть Глава 14 "Итераторы и генераторы, часть 1" и Глава 20 "Итераторы и Генераторы" (я сейчас как раз решаю одну проблему с Python и книги Марка Лутца всегда под рукой)
Но line - это просто переменная))))

К сожалению вопрос слишком емкий, чтобы я мог его полностью здесь раскрыть.

vedro-compota's picture

file - это генератор.

понял. спасибо)
прошу прокомментировать на русском код к файлу reducer.py - особенно те строки где встречается слово for
(частично я там уже перевёл)

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

и ещё концептуальный вопрос: http://fkn.ktu10.com/?q=node/5850

_____________
матфак вгу и остальная классика =)