프로그래밍
-
Design Pattern: Decorator (데코레이터)디자인 패턴 2021. 6. 19. 13:18
https://refactoring.guru/design-patterns의 디자인 패턴을 해석한 글입니다. 데코레이터 개념 데코레이터 는 구조적 디자인 패턴이다. 특정 컴포넌트를 특수한 래퍼 객체 안에 배치하여 새로운 동작을 할 수 있도록 한다. 문제 발견 중요한 이벤트를 사용자에게 알려주는 알림 라이브러리를 개발한다고 하자. 라이브러리의 첫 버전은 Notifier 클래스를 기반으로 한다. 메서드는 클라이언트로부터 메세지를 주고 받을 수 있다. 클라이언트 역할을 하는 서드-파티 애플리케이션은 Notitier 객체를 한번 생성하고 구성해야한다. 그리고 중요한 이벤트가 생겼을 때 각 시간에 사용하도록 되어있다. 시간이 지나 라이브러리 유저들은 이메일 알림보다 다른 종류의 알림을 원한다. 많은 사람들이 중요햔..
-
Design Pattern: Factory Method(팩토리 메서드)디자인 패턴 2021. 6. 12. 12:48
https://refactoring.guru/design-patterns 의 디자인 패턴을 해석한 글입니다. 개념 팩토리 메서드 패턴은 인터페이스를 제공하는 생성 디자인 패턴이다. 인터페이스는 슈퍼 클래스에서 객체를 생성하고 서브 클래스가 생성 될 객체의 유형을 변경한다. 문제 물류 관리 애플리케이션을 만든하고 상상해보자. 만들 앱의 첫 버전은 오직 트럭으로만 운송을 할 수 있디고 한다면, 코드는 대부분 Truck 클래스에 있다. 만약에 애플리케이션이 잘된다고 가정해보자. 하루에 해양 물류를 앱에 통합하라는 수십개의 요청이 해양 운송 업체에서 들어온다면 어떨까? 좋은 소식이긴 하지만 현재 코드는 Truck 클래스에 묶여있다. Ships이라는 클래스를 앱에 추가하려면 아마 전체의 코드 베이스를 바꿔야 한다..
-
[공부] 파이썬 코딩의 기술 책 정리 #4파이썬/책 정리 2021. 3. 28. 12:23
4. 컴프리헨션과 제너레이터 컴프리헨션 코딩 스타일은 제너레이터 이라는 특별한 구문을 사용해 이런(리스트, 딕셔너리, 집합 등) 타입을 간결하게 이터레이션하면서 원소로부터 파생되는 데이터 구조를 생성할 수 있다. 제너레이터는 함수가 전짐적으로 반환하는 값으로 이뤄지는 스트림을 만들어준다. 이터레이터를 사용할 수 있는 곳이라면 어디에서나 제너레이터 함수를 호출한 결과를 사용할 수 있다. 27. map과 filter 대신 컴프리헨션을 사용하라 다른 시퀀스나 이터러블에서 새 리스트를 만들어내는 간결한 구문을 리스트 컴프리헨션 이라고 한다. 리스트 컴프리헨션을 사용해 루프로 처리할 대상인 입력 시퀀스의 원소에게 적용할 변환식을 지정함으로써 같은 결과를 얻을 수 있다. squares = [x**2 for x in..
-
[공부] 파이썬 코딩의 기술 책 정리 #3파이썬/책 정리 2021. 3. 26. 13:24
Chapter3. 함수 19. 함수가 여러 값을 반환하는 경우 절대로 네 값 이상을 언패킹하지 말라 악어 개체의 몸 길이가 전체 개체군의 몸 길이 평균에 비해 얼마나 큰지 계산하는 함수를 작성한다면, def get_avg_ratio(numbers): average = sum(sumbers) / len(numbers) scaled = [x / average for x in numbers] scaled.sort(reverse=True) return scaled lengths = [63,75,85,64,34,74,53,88,53,86] longest, * middle, shortest = get_avg_ratio(lengths) print(f"최대 길이: {longest:>4.0%}") # 최대 길이: 130..
-
[공부] 파이썬 코딩의 기술 책 정리 #2파이썬/책 정리 2021. 3. 24. 11:29
리스트와 딕셔너리 리스트를 자연스럽게 보완 할 수 있는 타입이 딕셔너리 타입이다. 딕셔너리 타입은 검색에 사용할 키와 키에 연관된 값을 저장한다.(해시테이블, 연관 배열) 동적인 정보를 관리하는 데는 딕셔너리가 가장 이상적이다. 11. 시퀀스를 슬라이싱하는 방법을 익혀라 시퀀스를 여러 조각으로 나누는 슬라이싱 구문이 있다. 최소한의 노력으로 시퀀스에 들어 있는 아이템의 부분 집합에 쉽게 접근할 수 있다. 어떤 파이썬 클래스에도 슬라이싱을 추가할 수 있다. __getitem__과 __setitem 특별 메서드를 구현하면 된다. 리스트의 맨 앞부터 슬라이싱할 때는 시각적 잡음을 없애기 위해 0을 생략한다. 리스트의 끝에서부터 원소를 찾고 싶을 때는 음수 인덱스를 사용하면된다. a = list(range(10..
-
[프로그래머스] 신규 아이디 추천/ KAKAO BLIND RECRUITMENT / 파이썬알고리즘/프로그래머스 2021. 2. 18. 20:28
문제 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr 풀이 1. 파이썬 내장 모듈인 re 모듈을 이용하여 풉니다. 코드 import re def solution(new_id): #1단계: 모든 대문자를 대응되는 소문자로 치환 new_id = new_id.lower() #2단계: 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거 new_id = re.sub('[^\w\.-]', '', new_id) #3단계: 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 ..