[python] 파이썬에서 “예기치 않은 들여 쓰기”로 무엇을해야합니까?

파이썬에서 “예기치 않은 들여 쓰기”오류를 어떻게 수정합니까?



답변

파이썬은 줄의 시작 부분에 공백을 사용하여 코드 블록이 시작되고 끝나는시기를 결정합니다. 얻을 수있는 오류는 다음과 같습니다.

예기치 않은 들여 쓰기입니다. 이 코드 줄에는 이전보다 시작 부분에 더 많은 공백이 있지만 이전 코드 줄은 하위 블록의 시작이 아닙니다 (예 : if / while / for 문). 블록의 모든 코드 줄은 정확히 동일한 공백 문자열로 시작해야합니다. 예를 들면 :

>>> def a():
...   print "foo"
...     print "bar"
IndentationError: unexpected indent

이것은 파이썬을 대화식으로 실행할 때 특히 일반적입니다. 명령 앞에 추가 공백을 두지 마십시오. (예제 코드를 복사하여 붙여 넣을 때 매우 귀찮습니다!)

>>>   print "hello"
IndentationError: unexpected indent

들여 쓰기는 외부 들여 쓰기 수준과 일치하지 않습니다. 이 코드 줄은 시작 부분에 이전보다 적은 공백이 있지만 똑같이 일부가 될 수있는 다른 블록과 일치하지 않습니다. 파이썬은 그것이 어디로 가는지 결정할 수 없습니다. 예를 들어, 다음에서 최종 인쇄물이 if 절의 일부 여야합니까?

>>> if user == "Joey":
...     print "Super secret powers enabled!"
...   print "Revealing super secrets"
IndendationError: unindent does not match any outer indentation level

들여 쓰기 된 블록이 필요합니다. 이 코드 줄은 시작 부분에 이전과 같은 수의 공백이 있지만 마지막 줄은 블록을 시작할 것으로 예상되었습니다 (예 : if / while / for 문, 함수 정의).

>>> def foo():
... print "Bar"
IndentationError: expected an indented block

아무것도하지 않는 함수를 원한다면 “no-op”명령 패스를 사용 하세요 :

>>> def foo():
...     pass

탭과 공백을 혼합하는 것은 허용되지만 (적어도 Python 버전에서는) Python은 탭이 8 자 길이라고 가정하므로 편집기와 일치하지 않을 수 있습니다. 탭에 “아니오”라고 말하면됩니다. 대부분의 편집자는 공백으로 자동 대체되도록 허용합니다.

이러한 문제를 피하는 가장 좋은 방법은 하위 블록을 들여 쓸 때 항상 일관된 수의 공백을 사용하고 이상적으로는 문제를 해결하는 좋은 IDE를 사용하는 것입니다. 이렇게하면 코드를 더 쉽게 읽을 수 있습니다.


답변

Python에서 간격은 매우 중요하며 이는 코드 블록의 구조를 제공합니다. 이 오류는 다음과 같이 코드 구조를 엉망으로 만들 때 발생합니다.

def test_function() :
   if 5 > 3 :
   print "hello"

파일에 탭과 공백이 혼합되어있을 수도 있습니다.

PyScripter 또는 Netbeans 와 같은 Python 구문 인식 편집기를 사용하는 것이 좋습니다.


답변

-tt 옵션을 사용하여 코드를 실행하여 탭과 공백을 일관성없이 사용하고 있는지 확인하십시오.


답변

사용중인 편집기에서 보이는 공백을 켜고 탭을 공백으로 바꾸기를 켜십시오.

Python 믹싱 탭과 공백으로 탭을 사용할 수 있지만 일반적으로 오류가 발생합니다. 탭을 공백 4 개로 바꾸는 것이 Python 코드 작성에 권장되는 접근 방식입니다.


답변

올바른 들여 쓰기를 사용하여. Python은 공백을 인식하므로 블록에 대한 들여 쓰기 지침을 따라야합니다. 그렇지 않으면 들여 쓰기 오류가 발생합니다.


답변

Sublime을 사용하여 Python을 작성하고 들여 쓰기 오류가 발생하면

보기-> 들여 쓰기-> 들여 쓰기를 공백으로 변환

내가 설명하는 문제는 Sublime 텍스트 편집기로 인해 발생합니다. 다른 편집자에서도 동일한 문제가 발생할 수 있습니다. 본질적으로이 문제는 공백으로 들여 쓰기를 처리하려는 Python과 탭으로 들여 쓰기를 코딩하는 다양한 편집기와 관련이 있습니다.


답변

편집기에서 “탭 대신 공백 삽입”옵션을 사용하는지 확인하십시오. 그런 다음, 예를 들어 4의 탭 너비를 원하는 것을 선택할 수 있습니다. gedit의 edit-> preferences-> editor에서 옵션을 찾을 수 있습니다.

결론 : 탭이 아닌 공백 사용