본문 바로가기

반응형

진리는어디에

(289)
[Python] 클래스(class) #1 소개 이번 포스트 부터 파이썬의 클래스에 대해 알아 보도록 한다. 문법도 잘 모르는데 클래스란 무엇인지 어떻게 쓰는지 장황하게 설명해봐야 처음에는 잘 이해되지 않을 것이다. 우선은 문법 위주로 강의를 진행하고 개론적인 접근은 차차 예제들과 함께 깊이 파고 들어가도록 하겠다. 당장 이해 되지 않아도 멈추지 말고 계속 앞으로 진행해 나가도록 하자. 어차피 앞으로 다뤄질 포스팅에서 지겹도록 계속 언급 된다. 목차 >> 파이썬 클래스 소개 instance vs static dict vs slots property의 활용 special method callable object 클래스 데코레이터(class decorator) 상속 추상 클래스와 추상 메소드 클래스(class) 문법 클래스가 뭔지, 어떤 개념이 있는지 앞..
[Python] functools.partial() 이번 포스트에서는 functools 모듈의 partial 함수에 대해 짧고 굵게 집고 넘어 가도록 한다. 날씨가 많이 더워졌다. 다들 건강 관리 잘 하도록하자. 프로그래머는 지식 노동자가 아니다. 오래동안 고도의 집중력을 유지 할 수 있는 체력이 중요한 육체 노동자다. partial 함수란? functools.partial(func, /, *args, **keywords) partial 함수는 호출 될 때 positional argument(위치 기반 인자) args와 keyword argument(키워드 인자) keywords로 호출 된 함수 func처럼 동작하는 새 partial 객체를 반환한다. ※ positional argument, keyword argument, 함수 인자 리스트 사이에 있는 ..
[Python] 데코레이터(Decorator) #4 활용 이번 강좌는 데코레이터 시리즈의 마지막 강좌로써 Decorator #1, Decorator #2, Decorator #3와 이어지는 내용이다. 지난 강좌를 보지 않으면 이해하기 어려운 부분이 있으므로 꼭 이전 강좌들을 먼저 볼것을 추천한다. 목차 파이썬 데코레이터 소개 함수의 인자와 리턴값 처리하기 인자를 가지는 데코레이터 >> 데코레이터 활용 데코레이터 활용 이번 시간에는 지금 까지 배운것을 토대로 객체에 함수를 등록해주는 register라는 데코레이터를 만들어 보도록 하겠다. 종종 유용하게 쓰이는 패턴이므로 주의 깊게 살펴 보도록 하자. 먼저 데코레이터가 적용 되지 않은 코드를 먼저 살펴보자. # 객체(obj)에 함수(func)를 등록하는 함수 def register(obj, func) : setat..
[Python] 데코레이터(Decorator) #3 인자를 가지는 데코레이터 이전 강좌에서 functools 모듈의 wraps 데코레이터를 사용하면서 지금까지 우리가 배웠던 데코레이터와는 다르게 인자를 사용하고 있는 것을 보았다. 이번 강좌에서는 이와 같이 인자를 받을 수 있는 데코레이터에 대해 알아 보도록 하겠다. 목차 파이썬 데코레이터 소개 함수의 인자와 리턴값 처리하기 >> 인자를 가지는 데코레이터 데코레이터 활용 인자를 가지는 데코레이터 지금까지 우리가 만든 add_emoticon 예제는 한가지 이모티콘 밖에 출력 할 수 없었다. 이제 아래 예제 처럼 add_emoticon 함수가 인자를 가질 수 있도록 개선하여 고정된 이모티콘이 아닌 인자로 넘겨 받은 문자열을 출력 할 수 있도록 해보자. # @add_emoticon # say_hello = add_emoticon(say..
[Python] 데코레이터(Decorator) #2 함수의 인자와 리턴값 처리 이번 포스트는 인자와 리턴 값을 갖는 함수에 데코레이터를 적용하는 방법에 대해 알아 본다. 또한 함수를 데코레이팅함으로써 발생하는 함수의 메타 정보에 대한 문제들과 그 해결 방법에 대해 집중적으로 다루도록 하겠다. 목차 파이썬 데코레이터 소개 >> 함수의 인자와 리턴값 처리하기 인자를 가지는 데코레이터 데코레이터 활용 함수 인자와 리턴값 처리하기 [이전 강의]의 예제에서는 인자와 리턴 값이 없는 함수를 대상으로한 데코레이터 예제를 살펴 보았다. 그렇다면 아래와 같이 say_hello 함수에 인자가 추가 되면 어떻게 될까? def add_emoticon(func) : def inner() : print('= ̄ω ̄= ', end='') func() return inner @add_emoticon def sa..
[Python] 데코레이터(Decorator) #1 소개 이번 포스트 부터 파이썬의 핵심 기능 중 하나인 데코레이터(Decorator)에 대해 살펴 볼 예정이다. 데코레이터는 앞으로 나올 강좌에서도 종종 등장할 예정이므로 집중해서 읽도록 하자. 목차 >> 파이썬 데코레이터 소개 함수의 인자와 리턴값 처리하기 인자를 가지는 데코레이터 데코레이터 활용 데코레이터란? 데코레이터(Decorator)는 '장식하다', '꾸미다'라는 뜻으로 함수(또는 클래스 메소드)를 꾸며준다고 해서 이런 이름이 붙었다. 파이썬의 데코레이터는 기존 함수의 이름과 사용성을 변경하지 않는 상태에서, 함수에 추가 기능을 구현할 때 사용 되는 파이썬의 주요 특징 중에 하나다. 데코레이터는 기존 함수를 변경하지 않으면서 함수에 기능을 추가 할 때 사용된다. 예를 들어 아래와 같은 say_hello..
[Python] 함수 #7 람다(lambda) 이번 포스트에서는 익명의 함수를 만드는 람다 표현식에 대해 살펴 보도록 하겠다. 목차 함수 소개 디폴트 파라미터 주의 사항 파라미터 언패킹 파라미터 패킹 함수 객체 일급 객체(first class object) >> 람다(lambda) 람다 표현식이란? 람다란, 프로그래밍 언어에서 사용되는 개념으로 익명의 함수, 이름 없는 함수를 지칭하는 용어다. 익명함수란 말 그대로 함수의 이름이 없는 함수다. 보통 파이썬에서 def 키워드를 사용하여 함수를 선언하고 기능을 정의 하는 것과는 달리, 람다는 함수를 하나의 식으로 정의한다. 수학적으로 함수를 단순하게 표현하는 방법을 '람다'라고 하고, 함수를 하나의 식으로 표현 한다고 해서 '표현식'. 이 둘을 합하여 '람다 표현식'이라고 부른다. 아직 무슨 말인지 이해..
[Python] 함수 #6 일급 객체(first class object) 이번 포스트에서는 일급 객체(first class object)라는 용어에 대해 살펴 보겠다. 개념적인 내용이므로 프로그래밍하는데 큰 영향을 끼치지는 않지만(특히 파이썬에서), 알아 두면 어디 가서 아는척하기 좋은 지식이니 가볍게 읽고 넘어가도록 하자. 목차 함수 소개 디폴트 파라미터 주의 사항 파라미터 언패킹 파라미터 패킹 함수 객체 >> 일급 객체(first class object) 람다(lambda) 일급 객체(first class object)란? 우리가 프로그래밍을 하다 보면 first class object(일급 객체)라는 다소 생소한 용어를 만날 수 있다. 일급 객체란 프로그래밍에서 아래에 나열된 특징을 가지는 모든 객체들을 가리킨다. 모든 요소는 "할당 명령문의 대상"이 될 수 있다. 모든..
[Python] 함수 #2 디폴트 파라미터 주의 사항 이번 포스트에서 다룰 내용은 어려운 내용은 아니지만 파이썬 프로그래밍을 하다 보면 한번은 경험하게 되는 - 특히, 다른 프로그래밍 언어 경험이 있는 경우 더 경험하기 쉬운 - 디폴트 파라미터에 대한 문제를 다뤄보도록 하겠다. 파이썬 관련 면접 질문에서도 종종 물어보는 문제이므로 이제 시작하는 프로그래머라면 잘 읽어 두도록 하자. 목차 함수 소개 >> 디폴트 파라미터 주의 사항 파라미터 언패킹 파라미터 패킹 함수 객체 일급 객체(first class object) 람다(lambda) mutable 타입을 함수의 디폴트 인자로 사용하지 말라 파이썬에서 mutable 타입이란 상태를 변경 할 수 있는 객체를 말한다. 예를들어 list, bytearray, set과 같은 시퀀스들이 좋은 예다. 반대로 immut..
[Python] 함수 #5 함수 객체 파이썬에서는 모든 것이 객체로 취급 된다고 이야기 했다. "함수" 역시 예외가 아니다. 오늘은 "파이썬에서는 함수도 객체"다 라는 주제를 가지고 이야기를 풀어 보겠다. 목차 함수 소개 디폴트 파라미터 주의 사항 파라미터 언패킹 파라미터 패킹 >> 함수 객체 일급 객체(first class object) 람다(lambda) 함수도 객체다 파이썬에서는 모든 것을 객체로 관리한다고 했다. 파이썬 함수 역시 객체다. 자세한 설명은 뒤로 미루고, "함수는 객체다"라는 것만 기억하며 아래 예제 부터 보도록 한다. import sys def add(x, y) : return x + y print(hex(id(add))) # 함수 객체의 주소 print(sys.getrefcount(add)) # 함수 객체의 레퍼런스 ..

반응형