가변 기본 매개변수 사용: 리스트나 딕셔너리 같은 가변 객체를 함수의 기본 매개변수로 사용하면, 함수가 반복 호출될 때 동일한 객체가 공유되어 예상치 못한 버그를 유발할 수 있습니다. 이를 방지하려면 기본값을 None으로 설정하고, 함수 내부에서 None일 경우 새로운 객체를 생성해야 합니다. 🐛
반복 중 이터러블 수정: 리스트나 딕셔너리 같은 이터러블 객체를 순회하는 동안 직접 수정하면, 인덱스 변경으로 인해 요소가 건너뛰어지거나 예기치 않은 동작이 발생할 수 있습니다. 이 문제를 해결하려면 원본의 복사본을 순회하거나, 새로운 리스트를 생성하는 방식을 사용해야 합니다. 🔄
내장 함수 이름 가리기(Shadowing Built-ins): list, dict, set, id와 같은 파이썬 내장 함수의 이름을 변수명으로 사용하면, 해당 내장 기능이 가려져(shadowing) 원래의 기능을 사용할 수 없게 됩니다. 내장 이름과의 충돌을 피하기 위해 변수명에 접두사나 접미사를 추가하는 것이 좋습니다. 📛
십진수 정밀도 문제: 파이썬의 표준 부동 소수점 연산은 십진수를 정확하게 표현하지 못하여 0.1 + 0.2가 0.3이 아닌 예상치 못한 결과를 낼 수 있습니다. 금융 계산 등 정밀한 십진수 연산이 필요할 때는 decimal 모듈을 사용해야 합니다. 🔢
파일 닫기 누락: open()으로 파일을 연 후 close()를 호출하지 않으면 메모리 누수나 리소스 고갈을 초래할 수 있습니다. with open(...) as f:와 같은 컨텍스트 관리자를 사용하면 파일이 자동으로 안전하게 닫힙니다. 💾
시간 복잡도 이해 부족: 코드의 시간 복잡도(Big O 표기법)를 이해하지 못하면, 특히 대규모 데이터 처리 시 비효율적인 코드를 작성하게 됩니다. 예를 들어, 리스트의 맨 앞에 insert()하는 작업은 O(N) 시간이 소요되므로, 데이터 구조와 알고리즘의 효율성을 고려해야 합니다. ⏱️