[파이썬] port vs port[0] 디버깅 기록✍

박정훈·2024년 2월 11일
0
post-thumbnail


✍ 문제 인식

UvicornUtil.Settings.port vs UvicornUtil.Settings.port[0]?

위 코드는 내가 작성한 코드들인데 UvicornUtil.Settings.port로 호출하기를 기대하고 작성하였다.
그런데 안되는 것이다. UvicornUtil.Settings.port[0] 로 호출을 해야하더라.
port 데이터 타입이 기대와 다르게, 자꾸 튜플로 오는 거다.
너무 높은 버전의 python 버전(python3.12.0)과 라이브러리 호환성 문제인지 디버깅하다가. ChatGPT 에게 물어보니 tuple 로 올 수도 있다고 말해준 것을 믿고, 개발을 진행했다. 디버깅을 하다가 결국 못찾고, 최종의도 된대로 동작은 되는 것은 확인하고 진행했다.
그런데, 또 class 를 작성할 일이 있어서 작성을 했는데 왠걸 이번엔 UvicornUtil.Settings.port 이러한 꼴로 동작을 하더라..
내 작업물의 문제로 생각되서 코드를 VSCODE 에서 작성된 텍스트들을 비교해봤는데..
원인을 찾았다. 뭐가 잘못 됬냐면, 범인은 바로 , 이다.


✍ BEFORE

class foo:
	field= "3",


✍ 시도 대안

, 를 제거한다


✍ AFTER

class foo:
	field= "3"


✍ 생각 정리

디버깅 시에는 코드를 겸손히 다시보자

이렇게 수정을 하니 데이터 타입이 의도한 대로 문자열로 나오더라.
관련 로직을 데이터 타입을 튜플로 가정한채로 작성을 해버렸다.
잘못 가정된 부분을 모두 다시 수정해야 했다.
불필요한 공수가 추가로 들었다...

이번 문제의 경우, 파이썬은 compile error 가 없는 인터프리터 언어이기에 에러가 뜨지도 않고
심지어 문법적인 로직이 중간에 틀렸음에도, 놀랍게도 의도한 형태로 런타임에서 코드가 잘(?) 동작하고 있다...
또한, IDE 문법 lints 해주는 기능에서도 시현되지 않는다.

이런 코드를 만들어 놓고, 문제없는 코드라 판단을 할뻔하였다.
이게 토이프로젝트여서 다행이지, 실제 프로젝트에서 이런 문제를 저지른 채로 장기간 코드가 작성되었다고 하면....

ChatGPT 3.5의 정직한 말투는 아주 진짜인듯 들릴때가 많지만, 내용이 틀릴 수 있음을 반드시 감안해야한다.
도움이 되는 부분을 활용하고 적절한 판단을 할 수 있도록 하자.


✍ 생각 요약

ChatGPT 활용하되 맹신 금물
VSCODE 텍스트 비교기능 땡큐
"," 실수 잘 좀 보자.
profile
산책과 코드가 좋아요

0개의 댓글