2010-03-30 2 views
2

이 코드는 .py 파일에서 시도했지만 명령 줄 인터프리터와 유휴 상태에서는 실패합니다. 파이썬 3 사용 된 경우, print("continue") 같이 인수 주위에 괄호를 필요하므로왜 파이썬 인터프리터에서 SyntaxError가 발생합니까?

>>> try: 
...  fsock = open("/bla") 
... except IOError: 
...  print "Caught" 
... print "continue" 
    File "<stdin>", line 5 
    print "continue" 
     ^
SyntaxError: invalid syntax 

내가 파이썬 3, print 파이썬 2.6

+0

어떤 Python 버전을 사용하고 있습니까? –

+0

이 질문을 업데이트했습니다. 파이썬 2.6. –

+2

파일을 열 때 ('open (filename, mode) as f :') 항상 컨텍스트 관리자를 사용하고 싶다는 것을 유의하십시오. –

답변

5

을 사용하고는, 함수가 아닌 문입니다.

그러나 캐럿은 파이썬 3보다 이전 위치를 가리키고 있으므로 파이썬 2.x를 대신 사용해야합니다. 이 경우 대화식 인터프리터에이 정보를 입력하기 때문에 오류가 발생하며 정보를 알려주려는 의도를 파악하기 위해 약간의 "도움"이 필요합니다. 제대로 들여 쓰기를 해독 할 수 있도록이 같이, 이전 블록 이후에 빈 줄을 입력 :

>>> try: 
...  fsock = open("/bla") 
... except IOError: 
...  print "Caught" 
... 
(some output shows here) 
>>> print "continue" 
4

당신은 except 블록을 닫습니다 빈 줄을 남겨해야합니다. ...은 사용자가 주석을 추가 했음에도 불구하고 여전히 해당 블록에 코드를 넣으려고한다는 것을 나타냅니다. 이것은 인터랙티브 인터프리터의 단점입니다. 여기에 중요

try: 
    fsock = open("/bla") 
except IOError: 
    print "Caught" 

print "continue" 

는 들여 쓰기 후 빈 라인 :

2

인터프리터에서이 일을보십시오. 난 파이썬 2.6 인터프리터를 사용하고 당신과 같은 구문 오류를 throw합니다.

인터프리터가 빈 줄로 구분 된 단일 블록을 필요로하기 때문입니다. 또한 빈 줄 (두 줄 문자)은 블록의 끝을 나타내며 인터프리터는이를 실행해야합니다.

관련 문제