Home » Development » Python » Page 16

Python

파이썬의 데코레이터와 고차함수

데코레이터(decorator)는 말 그대로 어떤 객체에 대해서 부가적인 기능을 덧붙이는 것을 말한다. 어떤 클래스에 대해서 기능을 추가하려 할 때에 보통 그 클래스를 서브 클래싱하는데, 파이썬에서 데코레이터는 클래스가 아닌 임의의 함수에 대해서 기능을 추가한다. 언뜻 보기에 별 의미 없을 것 같은 이러한 패턴은 특정한 맥락에서는 코드를 간결하게 만들면서 문법적으로 깔끔하게 정리되는 코드를 만들 수 있는 장점이 있다. 오늘은 파이썬의 데코레이터는 어떻게 만들어지며, 어떤 상황에서 쓰일 수 있는지 알아보도록 하자.
더 보기 »파이썬의 데코레이터와 고차함수

[Python] 네이버 블로그 xml-rpc 클라이언트 만들기 – 1

xml-rpc 클라이언트 만들기

여러 개의 블로그 (최근 들어 마이크로블로깅 도구들도 쓰고 있으니)를 운영하다보면 가장 큰 문제 중 하나가 글이 여기 저기로 분산되다보니 한 곳에서 보아 볼 수 있는 방법이 없을까 하는 생각이 들었다. (또한 아내가 네이버 블로그를 시작한 것도 있고 해서) 네이버라는 플랫폼 자체는 그닥 마음에 들지는 않지만 아내는 사실 오픈된 블로깅보다는 이웃공개 등의 커뮤니티성 서비스를 원하는 것도 있고 또 네이버 블로그 자체가 유입량은 상당히 많다보니 다른 곳에 써 온 글을 네이버로 옮기는 작업을 해야 한다.더 보기 »[Python] 네이버 블로그 xml-rpc 클라이언트 만들기 – 1

[파이썬] 특정 웹주소의 소스를 긁어와 출력해주는 코드

파이썬의 가장 큰 장점 중의 하나는 웬만한 리눅스 서버에는 그냥 설치가 되어 있다는 점. 터미널 상으로는 웹브라우저를 돌려볼 수 없으니, 서버에서 다른 서버로의 웹 접근을 확인하기 위한 용도로 활용할 수 있는 코드를 소개한다…라지만 사실은 내가 나중에 또 쓸일이 있을까봐 기록해 둔 것.

with 구문과 컨텍스트 매니저

파일이나 소켓과 같은 특정한 리소스에 액세스하는 경우에 일반적으로 해당 리소스를 열면서 제어를 위한 핸들을 얻고, 리소스의 회수를 위해서 모든 작업이 완료된 경우에는 반드시 해당 핸들을 닫는 식의 흐름이 필요하다. 하지만 리소스의 열기와 닫기 사이에는 예측하지 못한 변수가 발생할 수 있다. 특정한 조건에 의해서나 예외가 발생하는 등의 이유로 리소스의 정리를 못한채로 루틴이 끝나거나 프로그램이 종료되는 경우가 발생할 수 있다. 따라서 이런 경우에는  try/except/finally 구문을 통해서 흐름의 끝에서 리소스를 정리하고 루틴을 떠나는 형태로 코드를 작성하는 방법도 있지만, 이러한 방법 역시 예외가 발생하는… 더 보기 »with 구문과 컨텍스트 매니저

[python] 문자열로 그 이름을 가진 속성에 접근하기

Key-Value coding in Python

파이썬에서 키-밸류코딩(문자열을 통해 특정 멤버변수 혹은 로컬변수에 접근)하는 방법에 대해 알아보자.

전역변수 혹은 지역 변수에 대해 문자열로 접근하기

globals() , locals() 함수는 각각 전역변수와 지역변수의 키-값 쌍을 사전으로 반환한다. 따라서 locals()['someVar']라고 쓰면 지역변수 someVar의 값을 구할 수 있다. 이 방법은 파이썬2, 파이썬3에서 공통적으로 사용 가능하다.

객체의 속성값(멤버)에 대해 문자열로 접근하기

getattr(), setattr()을 사용하면 특정한 객체 내부의 값에 대해 문자열로 접근할 수 있다.

호출 가능한 속성인지 확인하기

파이썬에서는 객체의 속성에 대해 객체인지, 값인지 (파이썬은 상수도 객체로 인식한다.) 혹은 함수인지 (파이썬은 함수도 객체로 인식한다.) 아리송할 때가 있다. 이 때는 callable()함수를 사용해서 해당 객체를 넣어주면 호출 가능한지 아닌지 알 수 있게 된다. (호출 가능한 속성은 내부적으로 다시 call 함수가 정의되어 있다. 클래스를 정의할 때도 해당 클래스의 call 함수를 정의해두면 클래스 이름을 함수처럼 사용할 수 있다.

def viewAttrs(obj):
    for ar in dir(obj):
        if callable(getattr(obj,ar)):
            print "Callable >> %s : %s\n\n" % (ar, getattr(obj,ar).__doc__)
        else:
            print "Property >> %s : %s\n\n" % (ar, getattr(obj,ar).__doc__)

위 코드는 특정 객체를 받아, 해당 객체의 모든 속성을 조사하여 실행 가능한지 여부와 함께, 해당 속성의 문서화된 정보를 표시해준다. 참고로 hasattr()도 있고, 이는 당연히 객체가 주어진 이름을 갖는 속성을 가지고 있는지 알아내는 함수이다.더 보기 »[python] 문자열로 그 이름을 가진 속성에 접근하기

Flask 설치하기

Flask Flask는 아마도 Pyramid보다도 더 작은 미니멀한 웹 프레임워크로 보인다. 역시나 자세한 설명은 생략한다 홈페이지에서. 설치 eazy_install로 한 방에 할 수도 있는데, 아무래도 가상 환경(virtualenv)을 사용하면 좀 더 깔끔하다. 홈페이지에 소개되어 있는 설치 방법 가상환경은 virtualenv 패키지로 간단히 생성할 수 있다. virtualenv 패키지는 easy_install로 설치할 수 있음 c:\> python27\scripts\virtualenv fenv c:\> cd fenv c:\fenv> scripts\activate 이 시점에서 프롬프트가 바뀌고 가상환경이 활성화되었음을 알 수 있다. (fenv) c:\fenv> pip install Flask 다음은 홈페이지에서 소개하고 있는 간단한 예제이다. from flask import Flask app… 더 보기 »Flask 설치하기

Sqlite3 모듈의 기본 사용법

간단한 예제로 sqlite3 모듈을 사용해서 데이터베이스를 조작하는 방법을 살펴보자. 파이썬은 sqlite3 데이터베이스를 사용할 수 있도록 sqlite3 모듈을 내장하고 있다. 기본적인 사용 순서는 다음과 같다. sqlite3.connect()를 사용해서 데이터베이스 파일을 열고 연결한다. connection 객체가 생성되며, 이를 통해 쿼리를 전달할 수 있다. connection.execute()를 사용해서 쿼리를 전송하고 실행할 수 있다. execute()의 결과로 cursor 객체를 얻게 되는데, 이 객체를 사용해서 영향을 받은 row의 수를 확인하거나, SELECT 문의 경우 각각의 row를 읽어올 수 있다.

윈도 시스템에 Pyramid 설치하기

윈도 시스템에 Pyramid 설치하기 Pyramid란? Pyramid는 파이썬기반의 경량 프레임워크이다. 자세한 설명은 생략한다. 링크를 참조하자. Pyramid 설치 준비물 Pyramid를 설치하려면 다음의 내용들이 필요하다. Python 2.7 혹은 3.0 pywin32 – 설치되어 있는 파이썬 버전과 동일한 버전을 설치해야 한다. 다운로드는 sourceforge에서 내려받을 수 있다. easy_install – 파이썬 패키지를 자동으로 내려받을 수 있도록 하는 도구. 없다면 ez_setup.py를 내려받아 python ez_setup.py 로 설치하면 된다. virtualenv 설치 순서 (python 2.7/3.2) virtualenv를 설치한다. c:\> c:\python27\scripts\easy_install virtualenv 가상 환경을 만들어 준다 c:\> c:\python27\scripts\virtualenv –no-site-packages env 가상 환경 디렉토리로… 더 보기 »윈도 시스템에 Pyramid 설치하기