콘텐츠로 건너뛰기
Home » Development » Python » 페이지 18

Python

[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 설치하기

[Python101] Iterable(3) – 튜플

튜플(tuple)은 ‘한 벌’의 의미로 의미상으로는 가장 원시적인 배열이다. 튜플 한 번 만들어지고 나면 수정이 불가능한 집합이다. 쉽게 말해서 리스트를 ‘얼리면’ 튜플이 된다. 튜플을 만드는 법 리스트를 정의할 때는 대괄호에 원소들을 써서 생성했다. 튜플의 경우에는 괄호에 원소들을 써서 만들 수 있다. 아래의 b는 터플이다. a = [1, 2, 3, 4] b = (1, 2, 3, 4) 터플의 원소는 리스트와 마찬가지의 방법으로 접근할 수 있다. 터플 이름 뒤에 대괄호를 쓰고 그 속에 인덱스를 넣으면 된다. b[2] # –> 3 b[:2] # –>… 더 보기 »[Python101] Iterable(3) – 튜플

[Python101] 로직(2) – 반복문

지난 시간에는 조건을 통해 갈림길 중 한쪽으로 진로를 결정하는 조건문에 대해 살펴 보았다. 이번 시간에는 반복문에 대해 알아보도록 하겠다. 반복문은 쉽게 말해서 같은 (혹은 비슷한) 작업을 여러 차례 반복하도록 지시하는 구문이다. 파이썬의 반복문은 조금 독특한 구석이 있는데, 이는 설명을 하면서 이야기하도록 하겠다. while 문 중고등학교 때로 기억을 거슬러 올라가보면 (요즘은 어떤지 모르지만) 그 때는 컴퓨터 시간에 BASIC을 배웠는데, 이 때도 FOR 문이라는 게 있었다. 그 이후로 반복문의 대명사는 사실 for 인데, 파이썬의 for는 약간 다른 (그리고 좀 멋진) 부분이 있어서… 더 보기 »[Python101] 로직(2) – 반복문

[Python101] 006 로직(1) – 조건과 조건문

사실, “자료의 유형”에 대해 먼저 다루어야 하는 게 아닌가 싶기도 하지만 그보다든 더 ‘일반적인’ 내용을 다루는 게 맞겠다는 생각에 로직을 먼저 설명하기로 결정했다. 자료의 유형은 사실 대부분의 프로그래밍 서적에서 맨 먼저 다루는 형태인데, 파이썬에서는 일부 매우 중요한 자료형을 제외하고는 ‘개념’만 이해하면 될 정도로 기본적인 내용은 단순하기 때문에 이 부분들은 차근차근히 알아 나가면 될 것 같아서 먼저 로직에 대해 설명해보기로 하겠다. 프로그램은 사람이 정의해준 절차에 따라 컴퓨터가 연속적으로 일을 처리해 나가도록 하는 일종의 “작업 지시서”이다. 당연하게도 파이썬은 소스코드에 명시한대로 일을 처리해… 더 보기 »[Python101] 006 로직(1) – 조건과 조건문

[Python101] 005 함수,모듈, 그리고 도움이 되는 도구들

지난 시간까지 기본적인 프로그래밍에 필요한 “입출력”을 다루는 부분을 간단하게 나마 살펴보았다. 실제로 지금까지의 내용은 뭔가 설명이 필요하거나 개념적인 이해를 도모하는 부분과는 조금 거리가 있었고, 마치 조리법처럼 “이렇게 하면 이렇게 이렇게 됩니다.” 정도였기에 경우에 따라서는 조금 재미도 떨어지고 지겨운 부분이 없지 않아 있었을 것으로 생각된다. 이번 시간부터는 프로그램을 구성하는 단위와 이를 어떻게 만드는지, 그리고 프로그램의 흐름은 어떤 식으로 만들어지는지를 살펴보고자 한다. 모듈 모듈(Module)이라는 것은 다른 것으로 대체 가능한 어떤 구성 요소를 뜻하는데, 파이썬에서는 미리 만들어두었다가 필요할 때 꺼내 쓰는 레고 조각같은… 더 보기 »[Python101] 005 함수,모듈, 그리고 도움이 되는 도구들

[Python101] 004. 파일. 파일을 읽고, 파일에 쓰기

사용자로부터 입력을 받아 데이터를 처리하는 프로그램은 실질적으로 효율에 한계가 있다. 처리해야 하는 데이터를 사용자가 일일이 매번 입력해야 하기 때문이다. 컴퓨터는 귀찮고 반복적으로 처리하는 작업을 수월하게 하라고 있는 것이므로 프로그램은 가능한한 많은 과정을 자동화하는 방향으로 처리하는 것이 좋은 경우가 많다. 보통의 경우에는 다음과 같은 방식의 순서로  작업을 많이 처리하게 된다. 처리해야 할 데이터를 미리 준비 (텍스트 파일이나 엑셀 파일 등) 프로그램을 실행할 때 매개변수로 처리할 파일을 주고 실행한다. 프로그램이 데이터 파일을 읽어 들여서 데이터를 주르르르륵 처리한다. 처리한 결과는 또 다른 파일에… 더 보기 »[Python101] 004. 파일. 파일을 읽고, 파일에 쓰기