본문 바로가기

Language/Python

(17)
RePythonOOP 17일차 Python Underscore 파이썬 언더스코어 사용하는 이유 1. 인터프리터에서 마지막 값을 저장 10 _*10 _/10 2. 값을 무시하고 싶을때 i,_,j = 1,2,3 i # 1 j # 3 a = 1 for _ in range(5): print(a) 3. 변수나 함수명에 특별한 의미를 부여하고 싶을때 1) 폴더안에 __init__.py 파일 존재시 폴더를 패키지로 사용가능 2-1) _변수 : protected 외부(module)에서 사용이 불가하고 파일내에서만 직접 접근가능 2-2) __변수 : privated 완전 private 직접접근 불가, 맹글링(변수나 함수명을 일정한 규칙으로 변형)하기 위해서이다. 하지만 인스턴스._클래스(객체명)__변수명 으로 접근이 가능하다 어렵게 접근하게 함으로 직접접근 또는 외부에서의 값 변경..
RePythonOOP 16일차 Local and Global Scope in Function, Function Closure, Function Decorator Insight 1. 지역,전역,자유 영역(Scope)에 대해 정확히 구분하여 사용 할 수있다. (이런 짜치는 걸로 고민 할 시간이 줄어 들었다.) 2. 클로저를 사용하는 가장 큰 이유는 함수를 매개변수로 전달 하기 위함이 가장 큰 장점이라는 것을 알게되었다. 3. 데이터가 크다면 클로저사용은 지양 되어야 한다는 것을 알게 되었다. 4. 데코레이터 자주 쓰긴 했지만 정말 반복되는 작업에서 간편하다. 사전 지식 지역변수(local)와 전역변수(global)의 차이를 인지 Local and Global Scope in Function 지역변수와 전역변수가 같은 이름으로 선언이 되어있을때 지역영역에서 전역변수를 사용하는 예제를 보자 b = 1 def func1(a): print(a) print(b) from d..
RePythonOOP 15일차 Python Multi Parameter Variables, Function Signature, Function Partial Insight 1. 다양한 매개변수들의 형식에 맞게 인자를 처리할 수 있게 되었다. 2. 파라미터의 정보들이 햇갈릴 때 Signature를 사용 할 줄 안다. 3. 함수내 특정한 인자를 고정해야 할 때 Partial을 사용 할 줄 안다. 다양한 매개변수들 입력시 파이선의 처리방법 일반 파라미터, 가변 파라미터, 디폴트 파라미터, 키워드 파라미터 순서대로 알아 보겠습니다. def test(id, *args, age=None, **kwargs): return 'test ({}) ({}) ({}) ({})'.format(id, args, age, kwargs) 아이디 매개변수로만 받는다. print(test('test1')) # test (test1) (()) (None) ({}) 아이디 매개변수 먼저 붙이고..
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() 사용하는 프로그래머로서 나중에 함수를 인자로 사용시 에러가 나와도 걱정 하지 않게..
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..
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 : 한 번에 한 개의 항목을 생성하므로 메모리에서 데이터를 유지하..