반응형 전체 글476 파이썬 키 에러 (KeyError) 원인과 딕셔너리 안전하게 다루는 법 파이썬 키 에러 (KeyError) 원인과 딕셔너리 안전하게 다루는 법딕셔너리에서 값 하나 꺼내려다 "KeyError: 'email'"을 만나면 당황스럽다. user["name"]은 잘 되는데 user["email"]은 왜 터질까. 답은 단순하다. 그 딕셔너리에 'email'이라는 키가 아예 없기 때문이다. 파이썬 딕셔너리는 대괄호로 값을 꺼낼 때 "정확히 그 키가 있는가"만 본다. 없으면 대충 넘어가는 법 없이 곧바로 KeyError를 던진다. 그래서 이 에러의 진짜 해법은 "왜 없는지"를 파악하고, 없을 수도 있는 키를 애초에 안전하게 꺼내는 습관을 들이는 것이다. 이 글은 KeyError가 나는 이유와 단골 원인, 그리고 get·in·try·setdefault·defaultdict로 이어지는 딕셔너.. 2026. 7. 7. 파이썬 인덱스 오류 (IndexError: list index out of range) 원인과 해결 파이썬 인덱스 오류 (IndexError: list index out of range) 원인과 해결리스트를 다루다 보면 유독 "마지막"에서 자꾸 걸린다. 앞의 요소들은 멀쩡히 출력되다가, 딱 한 바퀴를 더 돌거나 한 칸을 더 짚는 순간 "IndexError: list index out of range"가 뜬다. 리스트에 분명히 값이 들어 있는데도 "범위를 벗어났다"니 억울하다. 하지만 이 에러는 사실 파이썬에서 가장 정직한 에러 중 하나다. 리스트의 정해진 범위 밖을 가리켰으니 그렇다고 알려 줄 뿐이다. 핵심은 딱 하나, 인덱스는 0부터 세고 길이 N인 리스트의 마지막 자리는 N번이 아니라 N-1번이라는 사실이다. 이 한 칸의 어긋남(off-by-one)만 이해하면 IndexError는 대부분 몇 초 만.. 2026. 7. 7. 파이썬 NoneType 오류 (TypeError: 'NoneType' object is not subscriptable) 원인과 해결 파이썬 NoneType 오류 (TypeError: 'NoneType' object is not subscriptable) 원인과 해결에러 메시지가 가리키는 줄을 아무리 들여다봐도 멀쩡하다. user["name"], 그냥 딕셔너리에서 값 하나 꺼내는 평범한 코드다. 그런데 파이썬은 "'NoneType' object is not subscriptable"이라며 여기서 멈춘다. 문법도 맞고 오타도 없다. 범인은 이 줄이 아니라, user라는 변수가 어느 순간 None이 되어 버렸다는 사실이다. 파이썬의 NoneType 에러는 거의 항상 이렇게 동작한다. 터지는 곳은 None을 "쓴" 자리지만, 진짜 원인은 그 None이 "만들어진" 자리다. 그래서 이 에러를 잘 잡는 사람은 에러 줄을 고치려 들지 않고, "이.. 2026. 7. 7. 파이썬 모듈 없음 오류 (ModuleNotFoundError: No module named) 진짜 원인과 해결 파이썬 들여쓰기 오류 (IndentationError · TabError) 원인과 해결다른 언어를 쓰다 파이썬으로 넘어온 사람이 거의 반드시 한 번은 겪는 벽이 있다. 코드는 분명히 멀쩡해 보이는데 실행하면 IndentationError나 TabError가 뜬다. 화면에는 아무 이상이 없다. 세미콜론을 빠뜨린 것도, 괄호가 안 맞는 것도 아니다. 범인은 눈에 보이지 않는 공백, 그러니까 탭과 스페이스다. 파이썬에서 들여쓰기는 "보기 좋으라고 하는 것"이 아니라 문법 그 자체이기 때문에, 이 공백 하나가 어긋나면 코드가 통째로 멈춘다. 이 글은 파이썬이 왜 유독 공백에 예민한지부터 시작해, 두 에러의 차이, 메시지별 정확한 해석, 그리고 에디터에서 이 문제를 뿌리째 없애는 방법까지 정리한다. 먼저 마음을 .. 2026. 7. 7. 파이썬 모듈 없음 오류 (ModuleNotFoundError: No module named) 진짜 원인과 해결 파이썬 모듈 없음 오류 (ModuleNotFoundError: No module named) 진짜 원인과 해결방금 터미널에서 pip install requests를 쳤고, "Successfully installed requests"까지 두 눈으로 봤다. 그런데 python app.py를 실행하자 대뜸 ModuleNotFoundError: No module named 'requests'가 뜬다. 분명 설치했는데 없다니, 파이썬이 거짓말을 하는 것 같다. 이 글은 그 억울한 순간의 진짜 범인을 잡는 이야기다. 결론부터 말하면 대부분은 "설치가 안 된 것"이 아니라 "설치한 파이썬과 실행하는 파이썬이 서로 다른 것"이다. 왜 그런지, 그리고 딱 세 줄로 범인을 특정하는 방법과 상황별 해결까지 깊게 파고든다. .. 2026. 7. 3. JS 에러 3대장 완전 정리 — TypeError·ReferenceError·SyntaxError 한눈에 JS 에러 3대장 완전 정리 — TypeError·ReferenceError·SyntaxError 한눈에자바스크립트 콘솔에 빨간 줄이 뜨면 당황하기 쉽다. 하지만 에러에는 이름이 붙어 있고, 그 이름이 원인의 큰 분류를 알려준다. TypeError, ReferenceError, SyntaxError. 이 세 가지가 실무에서 만나는 에러의 대부분을 차지해 흔히 3대장이라 불린다. 여기에 RangeError까지 더하면 거의 다 설명된다. 핵심은 이렇다. SyntaxError는 문법이 틀린 것, ReferenceError는 이름을 못 찾은 것, TypeError는 값의 타입이나 사용 방법이 잘못된 것이다. 이름만 봐도 어디를 봐야 할지 방향이 잡힌다. 이 글은 세 에러 유형의 차이, 자주 만나는 에러를 유형별.. 2026. 7. 2. == vs === 완전 정리 — 느슨한 동등·엄격 동등·형 변환·NaN == vs === 완전 정리 — 느슨한 동등·엄격 동등·형 변환·NaN자바스크립트에서 값을 비교하는 == 와 === 는 한 글자 차이지만 동작이 크게 다르다. 그리고 이 차이를 모르면 "0 == '' 이 왜 true지?" 같은 당황스러운 결과를 만난다. 핵심은 하나다. == 는 비교하기 전에 타입을 맞추려고 값을 변환(형 변환)하고, === 는 변환 없이 타입과 값을 그대로 비교한다. 그래서 == 는 겉보기에 다른 값도 같다고 하는 경우가 생기고, === 는 타입까지 같아야 참이 된다. 여기에 NaN은 자기 자신과도 같지 않고, null 과 undefined 는 서로만 느슨하게 같다는 특이 규칙까지 얽히면 헷갈림이 커진다. 이 글은 == 와 === 의 근본 차이, 형 변환이 만드는 함정, 그리고 === .. 2026. 7. 2. let vs var 함정 완전 정리 — 스코프·호이스팅·반복문 클로저 let vs var 함정 완전 정리 — 스코프·호이스팅·반복문 클로저자바스크립트에서 변수를 선언하는 var와 let은 비슷해 보이지만, 동작이 꽤 다르다. 그리고 그 차이를 모르면 "분명 코드는 맞는데 값이 이상하게 나오는" 버그를 만난다. 대표적인 게 반복문 안에서 함수를 만들 때다. for (var i...)로 돌린 코드는 나중에 실행되는 함수들이 전부 마지막 값(예: 3, 3, 3)을 찍고, let으로 바꾸면 0, 1, 2가 제대로 나온다. 같은 로직인데 var냐 let이냐로 결과가 갈리는 것이다. 이 차이의 뿌리는 스코프에 있다. var는 함수 단위, let은 블록 단위로 변수의 유효 범위가 다르기 때문이다. 이 글은 var와 let의 근본 차이, var가 만드는 대표 함정, 그리고 왜 const.. 2026. 7. 2. 이전 1 2 3 4 ··· 60 다음 반응형