파이썬에서 "예기치 않은 들여 쓰기"오류를 어떻게 수정합니까?
파이썬에서 "예기치 않은 들여 쓰기"오류를 어떻게 수정합니까?
답변:
파이썬은 줄의 시작 부분에 공백을 사용하여 코드 블록이 시작되고 끝나는시기를 결정합니다. 얻을 수있는 오류는 다음과 같습니다.
예기치 않은 들여 쓰기입니다. 이 코드 줄에는 이전보다 시작 부분에 더 많은 공백이 있지만 이전 코드 줄은 하위 블록의 시작이 아닙니다 (예 : 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 구문 인식 편집기를 사용하는 것이 좋습니다.
Sublime을 사용하여 Python을 작성하고 들여 쓰기 오류가 발생하면
보기-> 들여 쓰기-> 들여 쓰기를 공백으로 변환
내가 설명하는 문제는 Sublime 텍스트 편집기로 인해 발생합니다. 다른 편집자에서도 동일한 문제가 발생할 수 있습니다. 본질적으로이 문제는 공백으로 들여 쓰기를 처리하려는 Python과 탭으로 들여 쓰기를 코딩하는 다양한 편집기와 관련이 있습니다.
이 오류는 Python 인터프리터 (터미널 / 콘솔)에 무언가를 붙여 넣을 때도 발생할 수 있습니다.
인터프리터는 빈 줄을 표현식의 끝으로 해석하므로 다음과 같이 붙여 넣으면
def my_function():
x = 3
y = 7
인터프리터는 이전의 빈 줄을 y = 7
식의 끝으로 해석합니다 . 즉, 함수 정의가 끝났음을 의미하고 다음 줄 y = 7
은 새식이 기 때문에 잘못된 들여 쓰기를 갖게됩니다.
들여 쓰기가 괜찮아 보이면 편집기에 "공백보기"옵션이 있는지 살펴보십시오. 이를 활성화하면 공백과 탭이 혼합 된 위치를 찾을 수 있습니다.
스크립트를 복사하여 "" "전체 코드" ""아래에 넣으십시오.
이 줄을 변수에 지정하십시오.
a = """ your python script """
print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..
이제 ctrl + b를 사용하여 Sublime Editor에서이 코드를 실행하면 콘솔에 들여 쓰기 된 코드가 인쇄됩니다. 그게 다야
다음 명령을 실행하여 해결하십시오.
autopep8 -i <filename>.py
이렇게하면 코드가 업데이트되고 모든 들여 쓰기 오류가 해결됩니다. :)
이것이 해결되기를 바랍니다.
Python의 들여 쓰기 는 중요하며 다른 많은 프로그래밍 언어와 달리 코드 가독성을위한 것이 아닙니다. 연속 된 명령 사이에 코드에 공백이나 탭이 있으면 Python이 이에 민감하므로 Python은이 오류를 표시합니다. Python에 코드를 복사하여 붙여 넣을 때이 오류가 발생할 수 있습니다. Notepad ++와 같은 텍스트 편집기를 사용하여 이러한 공백을 식별하고 제거하거나 오류가 발생한 코드 줄에서 공백을 수동으로 제거하십시오.
Step1 :Gives error
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
Step2: L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]print(L[2: ])
Step3: No error after space was removed
L = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
print(L[2: ])
OUTPUT: [[7, 8, 9, 10]]
감사!