프로그래밍/PYTHON 12

python - Mixin

Python에서 Mixin 개념을 정리합니다. Mixin네 이렇게 섞는 겁니다.. (포스팅에서는 python class code를 Mixin합니다.) DefinitionMixin은 OOP 프로그래밍 개념으로 특정 클래스의 코드를 다른 클래스에 삽입(혼합) 할 수 있도록 합니다. Python에서는 다중 상속 문법으로 Mixin을 구현합니다. 개념적으로 Mixin 클래스는 부모클래스가 되지 않으면서 어떤 클래스에서 사용할 수 있는 메소드를 포함하는 클래스입니다. 다시 한번, Mixin은 상속의 개념으로 쓰는 것이 아니라 끼워넣는 개념에 가깝습니다. Charateristic1. Mixin 할 때, 동일한 속성 및 메소드는 Overriding이 됩니다. Python 에서 다음처럼 다중 상속을 하면12class ..

python - Pandas Dataframe Handling(Creation, Filtering, Translation)

python library인 Pandas의 dataframe 처리에 관해 자주 쓰는 부분을 정리합니다. Creation, Filtering, Translation 등에 관한 정리입니다. Index 1. Creation 2. reset_index 3. Basic filtering 4. Translation Creation 기본 dataframe 생성입니다. pandas.DataFrame class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html 다음과 같이 dataframe을 만들어서 사..

python - Equality, Identity

python에서 햇갈리기 쉬운 equality와 identity에 대해 정리합니다. Summary 1. True / False를 비교할 때는 if문에 변수만 사용한다. - boolean에 대한 값은 True인지 False인지 명확하기 때문에 그냥 사용 2. Equality를 검증할 때는 == 또는 != 연산자를 사용 - 값이 맞는지만 비교 3. Identiy를 검증할 때는 is 또는 is not을 사용 - 객체 자체가 완전히 일치하는지를 비교 None의 비교 None은 python에서 정의된 NoneType 클래스임 None은 값이 아니라 Identity를 비교하기 때문에 ==이 아니라 is를 사용 ※ Equality를 비교해도 상관은 없지만 Identity를 비교해야 성능상의 이점이 있음 다음은 sma..

python - Comprehension, Generator expression

코드를 간결하게 작성하기 위한 python의 comprehension 문법에 대해 정리합니다. comprehension은 iterable한 개체를 확장하거나 변경하는데 용이합니다. Comprehension, Expression 기본 comprehension은 문법이기 때문에 실제 code를 보면서 이해하면 됩니다. list를 대상으로 comprehension 문법을 적용할 때는 대괄호[]를 이용합니다. dictionary를 대상으로 comprehension 문법을 적용할 때는 중괄호{}를 이용합니다. generator도 comprehension을 적용하여 만들 수 있는데, 명칭을 generator expression이라고 하며 Expression이라고 하기도 합니다. list를 대상으로 expressio..

python - Yield, Generator

generator에 대해서 정리를 합니다. generator의 정의는 generator iterator를 반환하는 함수입니다. generator iterator의 특징은 - generator iterator는 일반 iterator와 유사하지만 generator에서 yield 구문을 통하여 동작 - generator iterator는 iterator를 사용하는 모든 환경을 대체 가능 generator의 장점은 - iterator에 비해 메모리를 적게 사용 - lazy evaluation 으로 동작 generator에 사용되는 yield에 대한 정리입니다. Yield generator가 yield를 만나면 그 상태를 보존하고 있다가, 다시 generator가 호출되면 이어서 수행 yield는 generato..

[환경설정] python - Linux anaconda

[환경설정] python - Linux anaconda 데스크탑에 VM으로 Linux 설치 후, python 세팅을 처음부터 할 겸해서 포스팅을 합니다. 저는 CENTOS 를 개발용 LINUX로 쓰는데, anaconda를 설치해서 원하는 python 버전을 사용해 보도록 하겠습니다. ※ 참고로 그냥 원하는 python 버전을 바로 설치하셔도 되지만 anaconda를 깔고, 그 위에 python을 사용하는 이유는 해당 버전별 python 및 그에 해당하는 library의 버전 관리의 용이성 때문입니다. 설치 일단 웹브라우져를 하나 띄워서 anaconda download 페이지로 접속합니다. www.anaconda.com/products/individual#Downloads 우측의 64 Bit Install..

python - Iterable, Iterator

python에서 지원하는 iterator 에 관해 정리합니다. 우선 iterator를 알기 위한 iterable을 정리합니다. Iterable 가지고 있는 값을 한번에 하나씩 반환할 수 있는 개체를 말함. 한번에 모든 값을 반환할 수도 있고 한 번에 하나씩만 반환활 수도 있음. 대다수의 container 및 open files, open socks에서 지원하며 클래스에서 __iter__ 나 __getitem__ 메서드를 구현한 경우가 iterable한 case임 다음은 sample code입니다. 여기서는 x가 list type container인 iterable입니다. x_iter는 iter함수를 이용하여 x를 iterator로 만든 것 입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 #..

python - Decorator

지난 posting인 closure 에 이어서 이번에는 decorator 에 관해 정리합니다. 간단히 decorator 는 말 그대로 function을 감싸서 장식하는 역할을 합니다. Decorator basic 우선 예제부터 보겠습니다. 3 line에 decorator(func)가 정의되어 있습니다. func을 인자로 받아 netsted function인 wrapper() 함수를 이용하여 closure 를 만들어 return 하도록 구현되어 있습니다. 여기서 func() 은 단팥빵에서 앙꼬라면 wrapper() 는 빵이 되겠네요. 여기서는 func() 앞 뒤로 "before" / "after" 메세지를 출력하게 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1..

python - Closure

python의 closure에 대해 정리합니다. 다음은 closure의 기본 형태입니다. 12 line의 closure 함수를 호출할 때 10을 인자로 전달하여 inner 함수를 return 하도록 합니다. 이제 inner 함수는 nonlocal 변수인 x의 값을 메모리에 저장하고 있다가 실제로 inner 함수가 호출될 때 저장된 x의 값과 inner 함수로 전달된 y 값의 합을 return 합니다. 이렇게 기술적으로 inner 함수를 반환하여 사용하는 형태를 closure 라고 합니다. 이 때 inner 함수는 nonlocal 변수의 값을 메모리상에 계속 가지고 있을 수 있으며 활용하게 됩니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/usr/bin/python3..

python - map(), filter(), reduce() usage

iterable object를 python 답게 사용할 수 있는 map(), filter(), reduce() 삼형제에 대해 알아보겠습니다. map map은 지정된 함수로 반복 가능한 요소를 일괄 처리해주는 기능을 합니다. 현실에서의 예를 들자면, 엄마가 "자 콩나물 100개가 있으니깐 머리의 콩껍질을 다 까놔"라고 심부름을 시키신 경우가 되겠습니다. (요즘에는 먹기좋게 마트에서 다 손질되어 나오지만 저 어렸을 때는 콩나물을 직접 시루에서 키워서 콩껍질이 붙어 있는채로 팔았습니다. -_-) 불쌍한 아들은 모든 콩나물 머리에 대해서 콩껍질을 까려고 했습니다. 아래와 같이 for 문으로 콩나물 1번 부터 10번 콩나물 하나씩 말이죠. bs_list = list(range(1,101)) for i in ran..

반응형