‘Python’ 태그의 글
6편 RSS로 구독
6편
파이썬 속성 조회 순서: 데이터 디스크립터가 인스턴스 __dict__를 이기는 이유와 __set_name__
obj.x는 인스턴스 __dict__보다 데이터 디스크립터를 먼저 본다. __set__이나 __delete__ 정의 여부로 갈리는 조회 순서, cached_property가 덮어써지는 이유, 클래스 생성 뒤 붙인 디스크립터에서 __set_name__이 호출되지 않는 경우를 정리했다.
Python 제너레이터의 return 값은 어디로 갈까: StopIteration.value와 PEP 479
제너레이터에서 return한 값은 for 문에서는 보이지 않고 StopIteration.value에 담깁니다. yield from으로 받는 법, 제너레이터 안의 StopIteration이 RuntimeError가 되는 이유, close()의 반환값을 정리했습니다.
Python with 블록에서 예외가 사라지는 이유: __exit__ 반환값과 finally 속 return
__exit__가 참 값을 돌려주면 with 문은 예외를 억제합니다. finally 속 return과는 무엇이 다른지, 원하는 예외만 삼키는 억제기는 어떻게 쓰는지 Python 공식 문서 기준으로 정리합니다.
파이썬 기본 인자에 []를 쓰면 안 되는 이유: 기본값은 함수를 정의할 때 한 번만 만들어진다
def f(a, L=[])를 여러 번 호출하면 리스트가 계속 쌓입니다. 파이썬 공식 문서가 설명하는 기본값 평가 시점, __defaults__, None 패턴과 dataclass의 default_factory까지 예제로 정리했습니다.
위상 정렬과 순환 감지: 진입 차수로 순서를 정하고 막힌 곳 찾기
의존 관계를 실행 순서로 바꾸는 위상 정렬을 진입 차수 방식으로 구현하고, 순환이 있을 때 무엇이 남는지와 Python graphlib의 TopologicalSorter·CycleError 동작을 정리합니다.
Python .pyc는 언제 다시 만들어질까: timestamp와 hash 기반 무효화
CPython은 기본적으로 소스의 수정 시각과 크기로 .pyc가 최신인지 판단합니다. 이 방식이 놓칠 수 있는 경우와 checked-hash, unchecked-hash .pyc의 차이, compileall 사용법을 Python 3.14.8 문서 기준으로 정리했습니다.
찾는 글이 없습니다. 다른 낱말로 검색해 보세요.