이 문서는 파이썬 데코레이터에 대해 간단히 요점정리와 예제를 제공합니다. 데코레이터 (=decorator) : - 다른함수를 인수로 받으면서 callable 을 리턴하는 callable - 데커레이터는 데커레이트되는 함수(인수로 받은 callable)에 어떤 처리를 수행한뒤, 인수로 받은 함수를 그대로 리턴하거나 다른 콜러블 객체를 리턴한다. - 런타임이 아닌 import 타임에 실행된다. # 간단 데코레이터 예제 def decorate(func): def decorated(): print("데코레이터 실행 전") func() print("데코레이터 실행 후") return decorated @decorate def target(): print('target 함수 실행중임') target() 콜러블 (=..
String (문자열) literal - 파이썬 3.0 부터는 자동으로 유니코드 문자열로 취급되며, 접두사 b 를 붙이면 바이트 리터럴로 취급된다 - 파이썬 2 에서는 기본 리터럴이 바이트 리터럴이며, 접두사 u 를 붙이면 유니코드 문자열로 취급된다 (파이썬 3와 약간 반대쥬?) - Escape sequence (백슬래시 문자열들, 개행문자... 같은거) 를 사용할 수 있다. - 그외 쓸만한 문자열 리터럴의 속성들을 적어봄 # Basic string # 문자열 기본 print("example1") print('example2') s = """ "example3" !!! '따옴표 있어도 그냥 출력됨' """ print(s) # 자동 접합 (concat) # 인접해 있으면 그냥 자동으로 붙는다 s = "he..
이 포스팅은 파이썬 3 기준으로 인스턴스 메소드에 대하여 이야기 합니다. 본 내용에 앞서 아래 2가지 용어를 먼저 짚고 넘어가는게 좋겠습니다. - 인스턴스: 클래스의 생성자가 실행되어 얻어진 클래스 객체 - 인스턴스 메소드: 인스턴스에 바인딩된 함수 모든 인스턴스 메소드의 생김새는 일단 아래와 비슷하게 생겼죠 class MyClass: def my_method(self, *args, **kwargs): # some code comes here ... pass 클래스 하위에 소속 되어있고, 공통적으로 암묵적 첫번째 positional argument 인 self 를 가지고 있습니다. 여기서 self 는 인스턴스 자체를 가리킵니다. 즉, 모든 인스턴스 메소드는 인스턴스 정보에 대한 접근이 가능하며, 이를 이..
이 포스팅에서는 파이썬에 클래스 메소드와 스태틱 메소드의 성격을 알아보고, 두가지 메소드의 차이점을 한번 비교해본다. --- 클래스 메소드 (= @classmethod 데코레이터 함수) - class 자체에 바인딩 된 메소드 (인스턴스에서 호출 불가) - class 자체를 암묵적인 첫번째 파라미터로 넘겨받는다. - 그로인해 함수 안에서 클래스 자체에서 들고있는 모든 정보에 접근이 가능하다. - 반대로 클래스 인스턴스 정보는 접근이 불가능하다 - 메소드 내에서 class state 를 변경할 수 있으며 이는 현재 메모리에 올라가 있는 해당 클래스의 모든 인스턴스에 영향을 줄 수 있다. 그래서 이 부분은 클래스 메소드 생성 시, 매우 주의해야 함. - 일반적으로 클래스의 factory method (cls ..
이 포스팅에서는 파이썬의 Garbage collection 이 어떻게 이루어 지는지, 간단히 설명한다. Garbage collection: 프로그램이 자동으로 메모리 공간을 비워주는 것. (=Memory recycling) Reference: 참조, 특정 메모리 공간을 다른 곳에서 포인터 형식으로 가져다 쓸때 그것을 "참조 하고 있다" 고 표현한다. 파이썬은 아래의 2가지 방식을 활용하여 Garbage Collection 을 수행한다. 1. Reference counting - 모든 파이썬 object 는 reference count 라는 것을 가지고 있다. - 이것은 다른 곳에서 이 object 를 참조하는 개수로서, 0보다 크다면 어디선가 이 object 를 사용중이라는 것을 뜻한다. - 그래서 Ga..
아래의 예제는 모델별로 원하는 정보를 id 와 text 라는 키로 프로세싱 하여 되돌려주는 API 이다. annotate() 로 리턴필드명을 지정하고,Concat() 를 사용하여 model 의 필드 값들을 붙일 수 있으며, output_field 값을 지정하여 필드 타입도 지정할 수 있다.필드값 사이사이에 일반 문자열을 넣고 싶다면 Value 라는 Object 를 활용할 수 있다. class MyAPIView(APIView): def get(self, req): ret = APIResult() ret_dic = dict() if ('key' not in req.GET): ret_dic['error'] = "키 정보가 없습니다." else: if ('search' in req.GET) and (req.GE..
가상환경이란, 파이썬 프로젝트별로 사용하는 파이썬 버전과 라이브러리(pip 오픈소스 패키지)가 다르기 때문에,이것들을 프로젝트 단위로 효과적으로 관리하기 위한 방법이다. 일단 기본적으로 파이썬이 설치되어있어야 하고 (이건 파이썬 공식 홈페이지에서 다운받아 설치) 두번째로는 파이썬 패키지 관리툴(=pip)를 설치해야 한다.pip 는 홈페이지에서 get-pip.py 라는 스크립트를 다운받아서 직접 실행시켜주어야 한다. python3.5 get-pip.py 자 pip 설치가 끝났는가? 그럼 이제부터 virtualenv 설치를 해보자.sudo pip install virtualenv 모든 가상환경의 정보를 저장할 폴더가 생성될 path 로 이동 (주로 프로젝트 홈폴더)cd PROJECT_DIR 가상환경 init..
1. try - except 구문 사용법 Java에 익숙한 사람들은 모두다 try-catch구문을 알고 있을 것이다. try{ //some impelmentation}catch(Exception e){ //error handling e.printStackTrace()} 그럼 파이썬에서는 이러한 구문이 없을까? try - except 구문이 있다. 한번 살펴보자 try : # some implementationexcept Exception, msg : # Error handling comes here print("Error occured : "+str(msg)) pass 딱 보면 감이 올것이다.some implementation 부분에 에러발생이 가능한 코드가 들어가고그에대한 exception처리는 exc..