Python IndentationError: 들여쓰기가 외부 들여쓰기 수준과 일치하지 않습니다.

Abid Ullah 2024년2월15일
  1. Python의 들여쓰기 규칙
  2. Python에서 IndentationError의 원인
  3. Python에서 IndentationError: unindent가 외부 들여쓰기 수준과 일치하지 않음을 수정합니다.
Python IndentationError: 들여쓰기가 외부 들여쓰기 수준과 일치하지 않습니다.

이 기사에서는 코드 실행 중 발생하는 IndentationError를 해결하는 방법에 대해 알아봅니다. 이 오류가 발생하는 여러 가지 이유를 살펴보겠습니다.

또한 Python에서 이 오류를 해결하는 방법을 찾을 것입니다. Python에서 IndentationError가 무엇인지부터 시작하겠습니다.

Python의 들여쓰기 규칙

들여쓰기는 Python 언어의 필수 부분입니다. 코드에서 코드 블록을 정의하는 것은 들여쓰기에 따라 다릅니다.

들여쓰기는 공백과 탭을 모두 사용하여 수행할 수 있습니다. 들여쓰기 때문에 개발자가 코드의 흐름을 파악하기가 매우 쉽습니다.

특정 메서드/조건이 시작하고 끝나는 위치를 쉽게 찾을 수 있습니다.

Python에서 IndentationError의 원인

스페이스와 탭 모두 사용

Python 코드에서 들여쓰기에 공백과 탭을 모두 사용하면 IDE에서 IndentationError가 발생합니다. 이것은 일반적으로 이러한 오류의 경우이지만 일부 코드 청크에서 들여쓰기를 사용하지 못한 경우에도 발생할 수 있습니다.

위에서 언급했듯이 코드를 들여쓰는 방법에는 탭 또는 공백의 두 가지가 있습니다. Python에서 모든 들여쓰기 수준의 표준은 공백 4개 또는 탭 1개입니다.

이 들여쓰기 방식은 Python의 법칙이지만, 이 들여쓰기로 인해 코드 구성을 추적할 수 있는 Python 개발자를 위한 시각적 보조 도구이기도 합니다.

예제 코드:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")


exploring_indentation()

코드 출력:

Indentation works like this!

코드의 추가 들여쓰기로 인한 들여쓰기 오류

IndentationError의 또 다른 이유는 아래 예제 코드와 같이 추가 들여쓰기가 추가되었기 때문일 수 있습니다.

예제 코드:

def exploring_indentation():
    number = 9
    if number == 9:
        print("Indentation works like this!")
   else:
        print("this is an example of an unnecessary indent")
exploring_indentation()

코드 출력:

  File "<tokenize>", line 5
    else:
    ^
IndentationError: unindent does not match any outer indentation level

코드의 else 부분은 들여쓰기가 잘못되었기 때문에 if 조건 안에 있습니다.

Python에서 IndentationError: unindent가 외부 들여쓰기 수준과 일치하지 않음을 수정합니다.

스페이스와 탭의 일관된 사용

들여쓰기 소리를 추적하는 것은 충분히 지루하지만 들여쓰기를 추적하는 데 도움이 되는 기능이 내장된 PyCharm 및 VS Code와 같은 코드 편집기가 있습니다.

코드를 작성하는 동안 Enter 키를 눌러 다음 줄로 이동하면 편집기가 다음 코드 줄을 자동으로 들여씁니다.

또한 코드에서 탭과 공백을 혼합하는 경우 항상 탭을 공백으로 또는 그 반대로 변환하는 옵션을 찾을 수 있습니다.

예를 들어, PyCharm에서 왼쪽 상단 모서리에 있는 편집으로 이동하여 들여쓰기 변환 옵션을 선택하고 요구 사항에 따라 탭으로 또는 공백으로를 선택해야 합니다.

Pycharm 설정을 편집하여 들여쓰기 오류 수정

바깥쪽 들여쓰기 수준 일치

예제에 제공된 아래 코드에서 ifelif 문은 들여쓰기 없이 할당됩니다. 동시에 else 문에 추가 들여쓰기가 할당됩니다.

외부 수준의 추가 들여쓰기로 인해 Python 컴파일러는 else 문을 인식할 수 없으므로 IndentationError를 제공합니다(들여쓰기가 외부 들여쓰기 수준과 일치하지 않음).

예제 코드:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
        print("B is greater than A")
elif a == b:
        print("A and B are equal")
    else:
        print("A is greater than B")

코드 출력:

File "<string>", line 7
    else:
        ^
IndentationError: unindent does not match any outer indentation level

올바른 예제 코드:

a = int(input("Enter an integer A: "))
b = int(input("Enter an integer B: "))
if b > a:
    print("B is greater than A")
elif a == b:
    print("A and B are equal")
else:
    print("A is greater than B")

이러한 문제는 들여쓰기와 같은 사소한 실수에 대한 걱정 없이 프로그래밍 경험을 향상시키기 위해 특별히 만들어졌기 때문에 Python 관련 편집기에서 쉽게 해결할 수 있습니다.

그러나 IDE와 같은 메모장을 사용하는 경우 코드를 실행할 때까지 이러한 오류를 지적하지 않기 때문에 탭과 공백에 주의하고 들여쓰기를 아주 세세하게 추적하는 것이 좋습니다.

이 기사가 Python에서 IndentationError를 수정하는 방법을 이해하는 데 도움이 되기를 바랍니다.

작가: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

관련 문장 - Python Error