안녕하세요 한주현입니다.
오늘은 파이썬 스크립트 작성 시 자주 보게되는 오류 중 하나인,
IndentationError: expected an indented block
에 대하여 알아보겠습니다.
문제 상황
IndentationError: expected an indented block
기분 좋게 스크립트를 아래와 같이 작성한 다음 실행을 시켰더니..
1 2 3 4 | def hello(): print("Hello World!") hello() | cs |
아래와 같이 오류가 났습니다.. ㅠㅠ
1 2 3 4 5 | $ python helloworld.py File "helloworld.py", line 2 print("Hello world") ^ IndentationError: expected an indented block | cs |
무슨 일일까요?
아래 스크립트를 실행한 화면에서 line 2 라고 표시되어있습니다.
이 부분을 집중적으로 보죠 ㅎㅎ
해결 방법
예제 스크립트의 2번째 라인을 보니 print("Hello World!") 가 있습니다.
이것만 봐서는 별 문제가 없어보이는데,
왜 IndentationError: expected an indented block 라고 에러가 났을까요?
파이썬은 코드를 실행하는 코드 블록 단위가 들여쓰기(indentation)로 구분 됩니다.
if 문을 예시로 들어보겠습니다.
if 문 - python
1 2 3 4 5 6 7 | # Python if 조건문1: 명령문1 elif 조건문2: 명령문2 else: 명령문3 | cs |
if 문에 해당하는 코드 블록은 라인3,
elif 문에 해당하는 코드 블록은 라인5,
else 문에 해당하는 코드 블록은 라인7
로 각각 코드 블록을 구분하는 단위는 들여쓰기(indentation) 입니다.
다른 언어를 예로 들어보자면, C언어에서는 다음과 같이 중괄호 {} 를 사용하여 명령어들의 그룹을 잡습니다.
1 2 3 4 5 6 7 8 9 | // C language if (조건문1){ 명령문1; } else if (조건문2) { 명령문2; } else { 명령문3; } | cs |
다시 예제로 돌아가서,
1 2 3 4 | def hello(): print("Hello World!") hello() | cs |
첫 번째 라인에서 콜론으로 함수가 시작함을 알리고 코드 블록이 예상되는 상황에서
두 번째 라인의 들여쓰기가 안되어있어서 파이썬 인터프리터는
1 2 3 4 5 | $ python helloworld.py File "helloworld.py", line 2 print("Hello world") ^ IndentationError: expected an indented block | cs |
1 2 3 4 | def hello(): print("Hello World!") hello() | cs |
1 2 | $ python helloworld.py Hello World! | cs |
들여쓰기에 대한 documentation은 다음 링크를 참고해 주세요.
https://docs.python.org/2/tutorial/introduction.html#first-steps-towards-programming
https://www.python.org/dev/peps/pep-0008/#indentation
여러분들께 도움이 되셨으면 좋겠네요
그럼 다음 시간에 만나요!
'컴퓨터 > Python' 카테고리의 다른 글
[파이썬] 파이썬 에러 ValueError: invalid literal for int() with base10: '4.3' (0) | 2017.11.01 |
---|---|
[파이썬] 파이썬 에러 SyntaxError: Missing parentheses in call to 'print' (4) | 2017.11.01 |
[파이썬] 파이썬 에러 IndexError: list index out of range (0) | 2017.11.01 |
[IPython] %matplotlib inline 의 의미 (2) | 2017.10.22 |
[알고리즘] 파이썬 스택 구현 (0) | 2017.07.05 |
댓글