들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item28 요약 컴프리헨션 내부에는 식을 2개 까지만 사용해라. (루프문 2개 / 루프문1 + 조건문1..) 컴프리헨션 내부에 2개의 루프식이 있는 경우, 왼쪽부터 실행된다. (이중 For문이라고 생각하면 편함. ) Item 28. 컴프리헨션 내부에 제어 하위식을 2개까지만 사용해라. 컴프리헨션 내부에서는 조건문, 루프문 등을 사용할 수 있다. 컴프리헨션 자체는 긴 코드를 짧게 줄일 수 있는 이점이 있지만, 너무 과하게 쓰면 '짧지만 읽기 어려운 코드'가 된다. 컴프리헨션 내부에 식이 3개 들어가는 순간부터 '짧..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item45 요약 특정 어트리뷰트에 요구사항이 추가되고, 이를 호출하는 외부 클라이언트에 영향을 주지 않고 확장하고 싶은 경우 @property는 좋은 선택이 될 수 있음. @property를 사용해 데이터 모델을 점진적으로 개선할 수 있음. @property 메서드를 너무 과하게 쓰고 있다면, 클래스와 클래스를 사용하는 모든 코드를 리팩토링 하는 것을 고려해야 함. @property를 너무 많이 사용한 경우, 클래스를 분리하는 방식을 고려해봐야 함. 너무 거대한 @property는 읽기 어려워지고, 클래스로 분..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item44 요약 새로운 클래스 인터페이스를 정의할 때, 간단히 public attribute도 시작하고 Setter / Getter를 가급적이면 사용하지 마라. 객체에 있는 Attribute에 접근할 때, 부가 기능이 필요한 경우 @property로 이를 구현할 수 있음. @property를 사용할 때, 최소 놀람의 법칙을 따르고 이상한 부작용을 만들지 마라. @property 메서드가 빠르게 실행되도록 유지. 느리거나 복잡한 작업의 경우, 일반적인 메서드를 사용하라. @property로 setter를 정의하면..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 1. Itertools 라이브러리 Itertools 라이브러리에는 이터레이터를 위한 몇 가지 기능들이 추가되어있다. 이터레이터와 관련된 코드가 복잡해지는 경우라면, itertools 라이브러리에서 원하는 기능을 지원하는지 살펴보는 것이 좋을 수 있다. 2. 여러 이터레이터 연결하기 itertools에는 여러 이터레이터를 하나로 합치는데 사용할 수 있는 함수들이 지원된다. 2.1 chain() it = itertools.chain([1,2,3], [4,5,6]) print(list(it)) >>> [1, 2, 3, 4, 5, 6] 여러 이터레이터를 하나의 이터레이터를 합침. 2.2 repeat() # 3번만 반복하는 Iterator 생성 i..
참고 https://learnyousomeerlang.com/the-count-of-applications#from-otp-application-to-real-application 1. 이번 챕터에서 할 일 이번 챕터에서는 다음 작업을 진행하려고 한다. 이전에 구현했던 ppool을 이용해서 특정 작업을 진행함. 특정 작업은 .erl 파일을 읽고, 각 정규표현식에 해당되는 수식이 몇 개 있는지 Count 하는 것임. 이렇게 구현할 어플리케이션의 이름은 erlcount라고 한다. 다음과 같은 구조로 갈 것이고, 각 모듈의 역할은 다음과 같다. erlcount_counter : 프로세스 풀의 워커로 동작함. erlcount_sup : 워커 프로세스의 슈퍼바이저로 동작함. erlcount_dispatch : 디..