5 Unintuitive Python Features
- 클래스 비교 시, Python은 기본적으로 객체의 ID를 비교하므로, 내용이 같아도 다른 객체면 False 반환 🆔.
__eq__
메서드를 오버라이드하여 원하는 방식으로 비교 가능 ⚙️.
for
또는 while
루프에 else
블록을 추가하여 루프가 완전히 실행되었을 때 코드를 실행할 수 있음. 중간에 break
로 종료되면 실행되지 않음 🚧.
for
루프는 루프 변수를 외부 스코프에 남겨, 기존 변수를 덮어쓸 수 있음. 주의 필요 ⚠️.
try-except
블록에서 as
로 지정한 예외 변수는 블록 종료 후 삭제됨. for
루프와는 다른 동작 🧹.
- 리스트 슬라이스 삽입은 슬라이스된 부분을 제거하고 새 요소를 삽입함. 삽입할 요소 수가 슬라이스 크기와 달라도 작동 🔪.
- 함수에서 가변 객체(예: 리스트)를 기본 인수로 사용하면, 함수 호출 간에 공유됨.
None
을 기본값으로 사용하고 함수 내에서 초기화하는 것이 안전 🛡️.