powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Основы Python
3 сообщений из 3, страница 1 из 1
Основы Python
    #37784703
Heckfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день) Хочу спросить про непонятное поведение кода:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
filename = 'portfolio.txt'
portfolio = []
for line in open(filename):
    fields = line.split(',')
    name = fields[0]
    lang = fields[1]
    status = fields[2]
    age = int(fields[3])
    stock = (name,lang,status,age)
    portfolio.append(stock)
print portfolio


В файле лежит такое:
John,python,student,19
Mike,php,student,18
Вывод вот такой:
[('Ruslan', 'python', 'student', 19), ('Mike', 'php', 'student', 18)]
Вроде всё норм, но, вопрос что за странная конструкция
Код: python
1.
for line in open(filename)


Как бы вроде цикл, пробегается по массиву(Или что там возвращает open()?), почему в line попадает только одна строка? Почему тогда не работает вот такой код:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
filename = 'portfolio.txt'
portfolio = []
files = open(filename)
for line in files:
    fields = line.split(',')
    name = fields[0]
    lang = fields[1]
    status = fields[2]
    age = int(fields[3])
    stock = (name,lang,status,age)
    portfolio.append(stock)
print portfolio


Ведь files это то что возвратила функция open(). Или она в первом случае играет какую то особенную роль? Чет вообще понять не могу).
ПС конечно можно заучить что и как надо писать, но мне правда хочется разобраться, а то как то не уютно себя чувствуешь) Спасибо)
...
Рейтинг: 0 / 0
Основы Python
    #37786216
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Heckfy,

а что там выше в import ?
...
Рейтинг: 0 / 0
Основы Python
    #37787296
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Heckfy,

у меня работают оба варианта. питон3
насчет конструкции:
Код: python
1.
for line in open(filename):


open(filename) возвращает файл-объект(по умолчанию текстовый режим, чтение...), который поддерживает итерацию. поэтому цикл по нему и работает.
к тому же, так как open() вызывается внутри for то нет необходимости явно закрывать файл, он закроется автоматически, когда выйдет из области видимости, тоесть по окончании цикла.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Основы Python
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]