파이썬에서 "예기치 않은 들여 쓰기"로 무엇을해야합니까?
파이썬에서 "예기치 않은 들여 쓰기"오류를 어떻게 수정합니까?
파이썬은 줄의 시작 부분에 공백을 사용하여 코드 블록이 시작되고 끝나는시기를 결정합니다. 얻을 수있는 오류는 다음과 같습니다.
예기치 않은 들여 쓰기입니다. 이 코드 줄에는 이전보다 시작 부분에 더 많은 공백이 있지만 이전 코드 줄은 하위 블록의 시작이 아닙니다 (예 : 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에서 옵션을 찾을 수 있습니다.
결론 : 탭이 아닌 공백 사용
이 오류는 Python 인터프리터 (터미널 / 콘솔)에 무언가를 붙여 넣을 때도 발생할 수 있습니다.
인터프리터는 빈 줄을 표현식의 끝으로 해석하므로 다음과 같이 붙여 넣으면
def my_function():
x = 3
y = 7
인터프리터는 이전의 빈 줄을 y = 7
식의 끝으로 해석합니다 . 즉, 함수 정의가 완료되면 다음 줄 y = 7
에 새식이 기 때문에 잘못된 들여 쓰기가 있습니다.
들여 쓰기가 괜찮아 보이면 편집기에 "공백보기"옵션이 있는지 살펴보십시오. 이를 활성화하면 공백과 탭이 혼합 된 위치를 찾을 수 있습니다.
항상 나를 위해 일한 트릭이 있습니다.
예상치 못한 들여 쓰기가 있고 모든 코드가 완벽하게 들여 쓰기 된 것을 확인한 경우 다른 편집기로 열어 보면 들여 쓰기되지 않은 코드 줄을 볼 수 있습니다.
vim, gedit 또는 이와 같은 편집기를 사용할 때 나에게 일어났습니다.
코드에 편집기를 하나만 사용하십시오.
스크립트를 복사하여 "" "전체 코드" ""아래에 넣으십시오.
specify this line in a variable.. like,
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..
now execute this code, in Sublime Editor using ctrl+b, now it will print indented code in console. that's it
One issue which doesn't seem to have been mentioned is that this error can crop up due to a problem with the code that has nothing to do with indentation.
For example, take the following script:
def add_one(x):
try:
return x + 1
add_one(5)
This returns an IndentationError: unexpected unindent
when the problem is of course a missing except:
statement.
My point: check the code above where the unexpected (un)indent is reported!
Notepad++ was giving the tab space correct but the indentation problem was finally found in Sublime text editor.
Use Sublime text editor and go line by line
All You need to do is remove spaces or tab spaces from the start of following codes
from django.contrib import admin
# Register your models here.
from .models import Myapp
admin.site.register(Myapp)
Indentation in Python is important and this is just not for code readability, unlike many other programming languages. If there is any white space or tab in your code between consecutive commands, python will give this error as Python is sensitive to this. We are likely to get this error when we do copy and paste of code to any Python. Make sure to identify and remove these spaces using a text editor like Notepad++ or manually remove the whitespace from the line of code where you are getting an error.
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]]
Thanks!
참고URL : https://stackoverflow.com/questions/1016814/what-to-do-with-unexpected-indent-in-python
'program tip' 카테고리의 다른 글
Telnet은 내부 또는 외부 명령으로 인식되지 않습니다. (0) | 2020.08.14 |
---|---|
PostgreSQL 데이터베이스에 대한 활성 연결 목록을 선택하는 방법 (0) | 2020.08.13 |
Rails에서 기본값을 설정하는 방법은 무엇입니까? (0) | 2020.08.13 |
C ++ 열거 형은 서명되었거나 서명되지 않았습니까? (0) | 2020.08.13 |
UNIX 시대를 Date 객체로 변환 (0) | 2020.08.13 |