SR's Dev-Log

[Python] 메타클래스(Metaclass)

본문은 참고한 블로그 및 자료를 제가 이해하기 쉽게 다시 정리한 글임을 밝힙니다. 1. 메타클래스(Metaclass) 파이썬에서는 모든 것이 객체이기 때문에 클래스도 그 자체로 객체이다. 그렇다면 클래스라는 객체를 생성하는 클래스는 무엇일까? 이처럼 “클래스의 클래스”를 메타클래스(metaclass)라고 한다. 파이썬에서 기본적으로 사용하는...

[Python] 파이썬의 반올림은 사사오입? 오사오입? (+ 부동 소수점, Decimal)

파이썬의 내장 round() 함수는 우리가 흔히 사용하는 “사사오입” 방식의 반올림이 아닌, “오사오입” 방식의 반올림을 제공한다. 오사오입이란 무엇이며 왜 사용하는지, 더 나아가 부동 소수점의 문제점과 이를 해결하는 decimal 모듈까지 살펴보자. 반올림 방식에 대해서는 공식적인 자료를 찾지 못하여 틀린 부분이 있을 수 있음을 밝힙니다. ...

[Python] list와 dict의 내부 구현과 시간 복잡도 (+ 동적 배열, 해시 충돌)

1. 파이썬의 list 1-1. 배열(Array) 자료구조에는 크게 두 가지 방식이 있다. 연속 방식(contiguous): 메모리 공간 기반 (ex. 배열) 연결 방식(link): 포인터 기반 (ex. 연결 리스트) 연속 방식에 해당하는 배열의 경우, 고정된 크기만큼의 연속된 메모리를 할당하는 방식으로 구현된다. 이때 메모리에 ...