머릿말
파이썬을 사용해 본 사람도 파이썬을 입문하는 사람도
종종 이러한 에러창을 보게 될 것이다.
친절한 IDE를 사용하고 있다고 한다면 이러한 불상사를 사전에 막을 수도 있지만
에디터를 사용해서 파이썬을 코딩했다면 이 스페이스 한칸의 차이를 인식하지 못해서
멀쩡한 코드를 이리 보고 저리 보고 하면서 고민에 빠질 것이다.
(적어도 본인이 겪어본) 다른 언어에서는 존재하지 않는 파이썬의 특수한 문법
그것을 바로 Significant Whitespace 라고 한다.
프로그래밍을 처음 배우던 시절 해 봤던 장난이 하나 있는데
코드의 Depth 를 전부 없애고 한줄로 만들어 본 적이 있었다
예시
public static int doSomething (int a, int b) {
int num = a + b; // a 와 b 를 더한다.
num = num * 100; // a + b 에 100 을 곱한다.
num = num / 5; // (a + b) * 100 을 2 로 나눈다.
num = num - 10; // (a + b) * 100 / 2 에 10을 뺀다.
}
// 바꿔 본 내용 (현업에서 이렇게 하면 혼남 !!)
public static int doSomething (int a, int b) { int num = a + b; num = num * 100; num = num / 5; num = num - 10; }
통상적인 코딩에서는 막말로 저렇게 한줄로 이어 붙이거나
띄어쓰기를 1칸을 하던지 4칸을 하던지 전혀 프로그램 구동에 지장이 없다.
다만 가독성을 위해서 들여쓰기 권장 사항은 존재하긴 한다.
public class ExampleEvents
{
// A public field, these should be used sparingly
public bool IsValid;
// An init-only property
public IWorkerQueue WorkerQueue { get; init; }
// An event
public event Action EventProcessing;
// Method
public void StartEventProcessing()
{
// Local function
static int CountQueueItems() => WorkerQueue.Count;
// ...
}
}
사실 코딩 규칙을 안 지켜도 돌아가는 언어들은 컴파일 방식이기 때문이고
파이썬은 인터프리터 방식이라서 그렇다라고 적혀 있는 블로그도 있는데
더 구체적으로는 코딩 블록 방식이기 때문에 그런 것이라 볼 수 있다.
타 언어와 파이썬의 차이점 그것은 바로 {} 괄호의 유무이다.
대부분의 언어는 {} 안에 코드가 작성 되기 때문에
띄어 쓰기를 한줄을 하거나 네줄을 하거나 전혀 지장이 없다.
하지만 파이썬은 {} 가 없기 때문에 들여 쓰기를 통해 {} 를 대체한다.
때문에 Significant Whitespace가 지켜지지 않으면
쉽게 말해 코드의 시작과 끝을 파이썬이 인식할 수 없게 된다.
이것이 Significant Whitespace 의 개념인 것이다.