Почему мой код работает при запуске в .py файле, но возвращает SyntaxError в интерпретаторе Python? - PullRequest
4 голосов
/ 04 мая 2020

Рассмотрим этот код:

with open("tmp", "w") as f:
    print(0)
print(1)

Это работает, когда сохраняется как bug.py и работает с python bug.py. Но я не могу скопировать и вставить этот код в интерпретатор python:

Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("tmp", "w") as f:
...     print(0)
... print(1)
  File "<stdin>", line 3
    print(1)
    ^
SyntaxError: invalid syntax
>>>

Где синтаксическая ошибка?

Редактировать: Это применимо в целом, как в

if False:
    pass
pass

1 Ответ

6 голосов
/ 04 мая 2020

Вам нужна дополнительная пустая строка, чтобы завершить оператор with и ввести следующий оператор print:

>>> with open('/dev/random') as fin :
...     print(0)
...                             <<--- an empty line
0
>>> print(1)
1
>>> 
...