본문 바로가기

전체 글

(1179)
python list implementation 해당 글은 http://www.laurentluce.com/posts/python-list-implementation/ 를 번역한 글입니다. 해당 글의 로직은 python버전에 따라 다를 수 있습니다. List object C structure listobject.h의 소스 파일 typedef struct { PyObject_VAR_HEAD PyObject **ob_item; Py_ssize_t allocated; } PyListObject; list 오브젝트는 cpython의 위와 같은 c structure로 선언되어 있습니다. ob_item는 list의 데이터에 대한 포인터입니다. allocated는 메모리에 할당된 슬롯의 개수입니다. list의 전체 사이즈는 ob_size로 표현되며, 크기는 아래와..
Python string objects implementation 해당 글은 http://www.laurentluce.com/posts/python-string-objects-implementation/ 의 글을 번역한 것입니다. 해당 글의 소스는 python2를 기준으로 작성되었으며 python버전에 따라 다를 수 있습니다. PyStringObject 구조 파이썬의 string object는 PyStringObject 구조로 표현됩니다. “ob_shash”는 해쉬로 계산된 값입니다. “ob_sval"는 String의 사이즈인 “ob_size”를 포함 합니다. 문자열은 null로 종료됩니다. ob_sval의 초기 사이즈는 1byte이며, ob_sval[0] = 0이 됩니다. python3의 경우 PyUnicodeObject 구조로 표현됩니다. # python2 type..
Python integer objects implementation 해당 글은 http://www.laurentluce.com/posts/python-integer-objects-implementation/ 의 글을 번역한 것입니다. 해당 글의 소스는 python2를 기준으로 작성되었으며 python버전에 따라 다를 수 있습니다. 이 글은 파이썬의 integer가 내부적으로 어떻게 관리 되는지 설명합니다. 파이썬의 Integer 오브젝트는 PyIntObject 구조로 표현됩니다. 그 값은 long 타입으로 구현되어 있습니다. (Python3에서는 PyLongObject 객체로 integer는 long으로 대체되었습니다.) /* python2 */ typedef struct { PyObject_HEAD long ob_ival; } PyIntObject; 새로운 정수 객체가..
python hash && cache hash 우리가 흔히 사용하는 캐시는 두가지의 값이 필요합니다. Key / value , 즉 dictionary의 한 형태를 가지고 있습니다. 그렇다면 key는 어떻게 만들어질까요? 아시는 바와 같이 hash값으로 만들어집니다. 즉 특정한 연산을 통해( 특정 모듈러연산) 특정값으로 변환한 값입니다. ( 해시 고유값 분포 및 재연산은 이번 글에서 제외 합니다. ) 그렇다면 모든값을 hash로 만들수 있을까요? python에서 제공하는 hash 함수를 사용할 수 있을까요? 정답은 “NO”입니다. hash()를 사용 할 수 있는 데이터는 immutable 객체만 가능합니다. 즉 mutable은 해시가 불가능 하단 말이 됩니다. immutable / mutable Immutable과 mutable의 객체는 다음..
python에서 pow(n, n) 와 n**n 중 어느게 빠를까? 제곱근 계산을 위한 함수인 pow(n, n)와 n**n 중 어느 게 더 빠를까? 결론부터 말하면 pow() 함수와 **는 "거의" 동일 합니다. 네 "거의"요 **의 경우 bignum을 통해 연산을 합니다, 반면 pow()는 부동소수점으로 변환되어 이 변환되는 과정이 있어 시간이 조금 더 소요된다고 합니다. 하지만 결국 power() 연산은 같은 함수를 하기 때문에 거의 비슷합니다. 여기 까지가 동작 과정의 대한 이야기인데... 실제 어떻게 구현되어 있는지 살짝만 보겠습니다. https://github.com/python/cpython/blob/667b91a5e210e20946ad41f1796c544a1becf1b6/Objects/longobject.c#L4022 cpython의 pow 계산하는 일부분만..
심야카페 시간은 기다려 주지 않는다. 할 수 있는 일은 잘 보고, 기억하는 일 뿐이다. - 꼭 두번 이상 보시는걸 추천 한다. 두번째 볼때가 더 재미있다. 타임 패러독스를 이용한 오랜만의 좋은 작품.
파이썬 백엔드 면접 질문들 (장고+시스템+디비 포함) 동기와 비동기 파이썬 클로져 브라우져에서 서버와 통신 상세히 쿠키와 세션 세션의 저장방식은? 딕셔너리 구현방법 충돌이 일어났을때는? 리스트와 튜플의 차이 @staticMethod, @classMethod, @property 디버깅 툴은 어떤걸 썼는지? 메모리 효율은 어떻게 했는지? 파이썬 메모리 관련 테스트 하는 이유 테스트를 어디까지 진행했는지 테스트관련 목킹 테스트 커버리지를 어떻게 지켰는지 코드리뷰를 어떻게 하는지 사람과의 충돌은? Fib 재귀(손코딩) 메모리 제이션 구현 + LRU 구현 fib에서 10만번째는 어떻게 되는가? 어떻게 수정할수 있는가? 장고 모델 쿼리 (손코딩) Dict 탐색시간, inset 시간 해쉬 충돌 조건 클로져 함수 동작 방식 에어플로우 왜 사용했는지, 어떻게 관리 했는지 ..
django query 기초2 일반 ORM 모델 정의 class Country(models.Model): name = models.CharField(max_length=30) class City(models.Model): name = models.CharField(max_length=30) country = models.ForeignKey(Country, on_delete=models.CASCADE, relatec[ame='cities') population = models.PositiveIntegerField() 데이터 추가 >>> temp = ["Brazil","Turkey","Italy","Bangladesh","Canada","France","Peru","Argentina","Nigeria","Australia","Iran",..