이제 마지막 강의입니다. 이론을 길게 끌지 않고, 앞에서 배운 표준 라이브러리 도구를 묶어서 실제로 돌릴 수 있는 자동화 스크립트를 완성해 보겠습니다.
[파이썬 100강] 89강. doctest로 문서와 테스트를 한 번에 유지하기
함수를 설명하는 문서와 실제 동작이 자꾸 어긋나는 팀에서는, 오래된 예제가 오히려 버그를 만드는 경우가 많습니다. 이번 강의에서는 doctest를 이용해 "문서 예제 자체를 테스트"하는 방법을 바로 실습해 보겠습니다. 서론은 여기까지 하고, 바로 코드로 들어가겠습니다.
[파이썬 100강] 88강. unittest.mock으로 외부 의존성 없이 테스트 신뢰도 높이기
실무 테스트가 느려지고 불안정해지는 가장 흔한 원인은 코드 자체보다도 "바깥 세상"(네트워크, 시간, 파일, 랜덤 값)에 테스트가 직접 묶여 있기 때문입니다. 이번 강의에서는 unittest.mock을 사용해 외부 의존성을 끊고, 실패 원인을 코드 로직으로 좁히는 방법을 예제로 바로 익히겠습니다.
[파이썬 100강] 87강. warnings로 위험 신호를 조용하지만 확실하게 전달하기
에러를 바로 터뜨리면 사용자가 불편하고, 아무 말 없이 넘어가면 나중에 장애가 커집니다. warnings는 이 사이를 메워 주는 도구입니다. 이번 강의에서는 서론 길게 끌지 않고, "지금은 동작하지만 곧 문제가 될 수 있는 코드"를 어떻게 신호로 남길지 바로 예제로 익혀보겠습니다.
[파이썬 100강] 86강. traceback으로 예외 원인을 빠르게 추적하고 운영 로그 품질 높이기
에러가 났을 때 except Exception as e: print(e)만 찍으면, "무슨 에러인지는 알겠는데 어디서 왜 터졌는지"를 놓치기 쉽습니다. 이번 강의에서는 traceback 모듈로 호출 흐름을 텍스트로 남기고, 운영 환경에서 재현 가능한 디버깅 단서를 확보하는 방법을 바로 예제로 정리합니다.
[파이썬 100강] 85강. reprlib로 긴 객체 출력을 안전하게 축약해 로그 가독성 높이기
디버깅할 때 객체를 그대로 출력하면 금방 로그가 폭발합니다. 특히 긴 문자열, 대량 리스트, 깊은 중첩 구조를 print()나 logging에 그대로 넣으면 핵심은 안 보이고 비용만 커지는 상황이 자주 생깁니다. 이번 강의에서는 표준 라이브러리 reprlib를 사용해 “필요한 만큼만” 안전하게 보여 주는 방법을 바로 예…
[파이썬 100강] 84강. pprint로 중첩 데이터를 읽기 좋게 출력해 디버깅 속도 높이기
리스트 안에 딕셔너리, 그 안에 또 리스트가 들어간 데이터를 print()로 찍으면 한 줄로 길게 붙어서 눈이 바로 포기하게 됩니다. 실무에서는 API 응답, 설정 객체, 로그 컨텍스트처럼 중첩 구조를 매일 다루기 때문에, “잘 보이게 출력하는 기술”이 디버깅 시간을 크게 줄입니다. 이번 강의에서는 pprint 모듈을…
[파이썬 100강] 83강. copy 모듈로 얕은 복사와 깊은 복사를 안전하게 구분하기
실무에서 리스트나 딕셔너리를 "복사했다"고 생각하고 수정했는데, 원본까지 같이 바뀌는 버그를 한 번쯤은 겪게 됩니다. 특히 설정값, API 응답 데이터, 템플릿 객체를 재사용할 때 이런 문제가 자주 터집니다. 이번 강의에서는 copy 모듈의 copy()(얕은 복사)와 deepcopy()(깊은 복사)를 정확히 구분해서,…
[파이썬 100강] 82강. operator 모듈로 정렬·집계 키 함수를 더 빠르고 읽기 좋게 만들기
정렬, 그룹화, 집계 코드를 쓰다 보면 lambda x: x[1], lambda u: u["age"], lambda o: o.price 같은 짧은 람다를 계속 만들게 됩니다. 문제는 이런 코드가 많아질수록 의도는 비슷한데 표현이 제각각이라 가독성이 떨어지고, 디버깅할 때도 기준이 흩어집니다. 이번 강의에서는 operat…
[파이썬 100강] 81강. functools.partial로 함수 인자를 고정해 재사용성 높이기
같은 함수를 여러 곳에서 쓰는데, 특정 인자만 매번 고정해서 호출하는 상황이 자주 있습니다. 예를 들어 로그 레벨은 항상 INFO, 통화 포맷은 항상 KRW, API 클라이언트 timeout은 항상 3초처럼요. 이때 매번 래퍼 함수를 새로 만들면 코드가 늘어나고, 호출 규칙이 흩어집니다. 이번 강의에서는 functool…