티스토리 뷰

안녕하세요. 구스입니다.


이 글에서는 파이썬 개발시에 발생하는 에러 해결방안에 대해서 알아볼까 합니다. 오늘 알아볼 에러는 바로 IndentationError: unexpected indent 입니다. 개발환경에 Notepad++에서 많이 발생을 하는데요. 그럼 그 이유를 알아보도록 하죠. 


프로그램 개발시 프로그래밍을 하다보면 아래와 같이 코딩을 많이 진행하게 됩니다.


코드의 가독성을 높이기 위해서 Tab을 많이 사용하게 되는데요. 저는 파이썬 개발은 노트패드++(Notepad++)에서 하다보니 아래와 같이 코딩을 하면 IndentationError: unexpected indent 에러가 발생을 하더라구요.


IndentationError: unexpected indent 에러에 대해서 확인을 해본 결과 문제는 Notepad++에서 사용하는 Tab이 문제였습니다.



import socket

import sys   

    

ip = 'localhost'

port = 5005

size = 100  # Normally 1024, but we want fast response

    

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((ip, port))

s.listen(1)

   

conn, addr = s.accept()

print("Connection address:", addr)

   

while 1:

   

data = conn.recv(size)

if not data: break

  

print("received data:", data)

conn.send(data)  # echo

  

# if break

conn.close()


Notepad++에서 Tab을 사용하게 되면 위의 에러가 발생을 하게 됩니다.

따라서 Notepad++에서 파이썬 코드를 개발하는 경우에는 Tab을 삭제를 하고 코딩을 해야합니다. 그 이유는 Notepad++의 Tab은 다른 언어의 Space 값 4개와 동일하기 때문입니다.


파이썬은 Space의 값을 무시하지 않고, 실행이 되기 때문에 에러가 발생을 합니다. 그러면 Tab을 사용하지 말아야 하는가? 라는 의문을 가지게 되는데요. 


Tab을 모두 삭제를 하고 코딩을 해도 무방하지만, 그러면 가독성이 무진장 떨어지게 됩니다.

따라서 설정을 통해서 Tab을 아예 공백으로 처리하게끔 할 수도 있습니다. 


Notepad++의 설정 >> 환경 설정을 누르면 아래와 같이 기본 설정 창이 뜨게됩니다.

여기에서 탭 설정 부분으로 옮기신 후 탭을 공백으로 대체에 체크를 하게 되면 탭 자체가 공백으로 인식이 되기 때문에 컴파일에 문제가 없어진답니다. 



하지만 코드상에서는 Tab으로 인식을 하여 보여주기 때문에 가독성에서도 문제가 없어지게 됩니다. 

위와 같은 방식으로 설정을 하게 되면 아래와 같이 Tab을 누르면 ip 부분처럼 변동이 됩니다. 가독성에는 전혀 문제가 없죠. 




이 글에서는 파이썬 에러인 IndentationError: unexpected indent를 해결하는 방법에 대해서 알아보았습니다.

그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.



댓글