본문 바로가기

분류 전체보기

(104)
RePythonOOP 14일차 Python First-class Functions, First-class citizen Higer Order Function, reduce(), callable(), class as callable() Insight 1. 일급 함수, 일급 시민, 고위 함수에 대해서 설명할 수 있다. 2. 함수가 객체로 취급 되어 객체 처럼 행동하는 것을 일급 함수라고 한다. 3. 함수는 클래스보다 기본적인 내장 메서드가 더 많다. # {'__annotations__', '__defaults__', '__qualname__', '__call__', '__kwdefaults__', '__name__', '__globals__', '__get__', '__code__', '__closure__'} 4. 함수에 비해 클래스만 가지는 것은 약한참조(__weakref__)밖에 없다 5. 일급 시민의 의미들을 알 수 있엇다. 6. callable() 사용하는 프로그래머로서 나중에 함수를 인자로 사용시 에러가 나와도 걱정 하지 않게..
TIL 12/06~12/12 - effective python,고성능 파이썬의 책을 1회독을 하고 기본 내용들은 원노트에 정리를 하엿다. 블로그의 연재속도는 늦는데 블로깅을 하면서 복습이 되는 효과가 있엇다고 느꼇다. - 파이썬 디자인 패턴도 건들여 볼가 생각중이다 - 디자인은 크게 3가지로 나눈다 생성(creational) 구조(Structural) 행위(Behavioral) - 업무때문에 바쁜 날도 있지만 다음주까지 구현을 하는게 완료 될 것같다. - 프론트분들과 미리 JSON 타입을 명세하고 한번에 api통신 및 웹 구현이 되어서 기분이 좋았다. - 이번주 주말부터는 데이터 엔지니어링 쪽으로 공부와 기존 프로젝트를 정리를 조금 하기로 했다. - 낮에는 일하고 밤에는 공부하는 패턴이 반복되는거 같다. - 기본적인 파이썬을 활용하..
RePythonOOP 13일차 Python Immutable Dict, Immutable Set, Set Comprehension Insight 1. 이전에 보았듯 Immutable하게 자료형을 사용하면 해시 테이블 사용으로 성능을 올릴 수 있다. 2. 프로그래밍중에 변하지 않아야 하는 값이 거나 변동이 별로 없는 자료 라면 불변형 사용이 좋다. 3. 어떠한 자료형이든 선언 할 시 괄호그대로를 써주는게 성능에 좋다. 불변형 딕셔너리(immutable Dict) MappingProxyType : 읽기 전용 딕셔너리 python 3.3이상 부터 사용가능 합니다. 수정/삭제를 원할시 직접 객체를 복사하여 수정해야합니다. 변경되지 않는 딕셔너리를 사용하고 싶을 때 사용합니다. MappingProxyType()으로 사용 from types import MappingProxyType a = {'a': 'b'} m_p_t = MappingPro..
파이썬에서 in 연산자 (연결 연산자)는 선형 탐색에서 어떤 힘을 발휘하는가? Insight 1.파이썬에서의 in연산자(연결연산자)는 이미 sequence안에서 선형 탐색을 해주는 기능이 있다. 2.파이썬스러운 코딩은 in을 활용해서 선형탐색 시간을 단축하는 것이다. 3.그래서 for문(반복문)을 쓰지 않고 if문(분기문) 하나로 문제를 해결할 수 있다. 4. pep8스타일을 지향하는 것 특히 간결하게 코딩을 하는 것이 성능 향상의 지름길이다. 5.같은 기능 서로 조금식 다른 방법의 함수를 코딩하면서 어떤것이 더 빠른가 생각해 보게 되었다. 6.in 키워드는 선형탐색을 통해 O(n)의 시간 복잡도를 가진다. 선형 탐색이란 리스트의 처음부터 끝까지 순서대로 하나씩 탐색을 진행하는 알고리즘입니다. 선형 탐색함수를 만들고 for문 사용과 사용하지 않는 예시) 어떤 원소가 리스트 안에 포..
RePythonOOP 12일차 Python Hash_table in Dictionary Structure, Dictionary Comprehension, Dictionary_Inheritance in Class Insight 1. 해시 태이블 사용한다 == 해시 테이블 내부는 딕셔너리 구조다 -> 코드에 딕셔너리는 mutable하다. 햇갈리지 말자 2. mutable한 자료형이면 해시 테이블을 사용하지 않는 자료구조이다 3. 결국 이걸 따지는 것은 Immutable한 자료가 성능 향상에 좋다. 4. 딕셔너리의 키 벨류 체이닝에 대해 여러 풀이 방법을 생각해 보았다. 5. 딕셔너리를 실제 클래스로 상속 받아서 구현함으로 딕셔너리 내부를 재대로 이해하게 되었다. Hash_table in Dictionary Structure 파이썬의 핵심엔진은 딕셔너리 형태로 이루어져 있다. 파이썬은 이 딕셔너리의 해시테이블(hashtable)을 사용 -> 해시 태이블내 해시값(숫자)로 같은지 아닌지 판별 -> 적은 리소스로 많은 ..
RePythonOOP 11일차 Python Packing VS Unpacking, Mutable(가변) VS Immutable(불변), sort() VS sorted() Insight 1. '모든 것이 객체이다.' == '순수 객체지향 언어이다'. 가 같은 말이라는 것을 알게 되었다. 2. 패킹과 언패킹으로 인자를 전달하고 값을 할당하는 것을 알게 되었다. 3. mutable과 immutable에 있는 call by ~~~~ 들을 구분하여 말할 수 있다. 4. sort와 sorted 가 본인 스스로 자주 사용해 왔엇는데 조금 더 자세히 들여다 보았다. Tuple Packing VS Unpacking 패킹 : 여러개의 객체를 묶어서 자료형으로 선언 해 주는 것이다. 언패킹 : 여려개의 객체가 들어 간 자료 형을 *로 풀어주는 것이다. (가변 파라미터 *,키워드 파라미터 ** 의 개념과 같다) 예를 들어보자. divmod(a,b) a를 b로 나누는 함수이고 결과는 몫과 나머..
RePythonOOP 10일차 파이썬 tuple comprehension, array comprehension Insight 1. 튜플 컴프리핸션이라고 무턱대고 ()를 사용하면 안된다. 2. 어레이를 왜 쓰는지 리스트와 어레이 사이에서 고민한다면 어떤 기준점을 잡을지 알게 되었다. 3. 리스트(가변형)를 사용시 연산자로 처리할때 의도치 않게 얕은 복사가 생길 수 있어 값이 한꺼번에 변동될 수 있음을 조심하자. 튜플 컴프리핸션 (지능형 튜플)을 만들어 보자 일반적으로 튜플 컴프리 핸션은 리스트 컴프리 핸션 거의 같다. 하지만 아래와 같은 우를 범할 때가 있다. # 제너레이터 생성 예제 tuple_ = (i for i in range(10)) print(type(tuple_)) # 제너레이터가 나온다? print(tuple_) # # Generator : 한 번에 한 개의 항목을 생성하므로 메모리에서 데이터를 유지하..
RePythonOOP 9일차 파이썬 컨테이너 VS 플랫, 가변 VS 불변, 리스트 컴프리 핸션 Insight 1. 리스트내에 for문을 통한 값 할당시 무조건 (지능형) 리스트 컴프리 핸션이 빠르다. 2. 가변 불변, 컨테이너, 플랫은 자주 보면서 외우려고 마음을 먹었다. (중요하고 나중에 다시 찾아 볼거 같아서) 3. 성능이 빠른 것도 중요하지만 때로는 상황에 맞게 코딩하는 여러 구현 방법들을 살펴 보았다. 시퀸스형(순서,순차)에서의 구분 서로 다른 자료형(container)을 담을수 있는 객체 tuple , list , collections.deque 하나의 자료형(flat)만을 담을수 있는 객체 str,bytes,bytearray,array.array, memoryview 가변(mutable)적인 객체 list, bytearray, array.array, memoryview, deque 불변..