라벨이 Python인 게시물 표시

Python 의 Filter / Map / Reduce 그리고 Comprehension

이미지
파이썬(Python)은 잘 쓰지 않다보니 이 함수형프로그래밍 함수의 대명사 3종의 사용법이 영 익숙해지지 않는다. 그래서 오랜만에 본 블로그 취지(?)로 돌아와서 이 함수들에 대해 간략히 메모한다. 더불어, 이제는 Python 3 로 넘어갈 시점이라 생각해서 모든 정보를 Python 3.7 기준으로 찾아봤다. 글자만 있으면 썰렁해서 넣어보는 이미지 -_-

[Python] 클래스 오브젝트 생성 제어

좀 특별한 경우겠지만, 특정 클래스의 오브젝트를 생성 할 때 조건을 만족하지 않으면 생성되지 않고 None이 되게 하고 싶은 경우라고 가정하자. 이렇게 하면 클래스 오브젝트 생성을 이용해 밸리데이션(Validation)이 가능해진다. 하지만 파이썬의 클래스 생성자격인 __init__ 은 값을 리턴 할 수가 없다. (정확히는 None만 리턴이 가능하다) 사실 대부분의 OOP에서 클래스의 생성자는 리턴을 가질 수 없다. Objective-C 같이 특이한 경우를 제외하고는...

[Python] 'in' 오퍼레이터 이야기

파이썬의 내장(built-in) 키워드 중 in 이라는 명령어는 다양한 용도로 이용 할 수 있다. 이 오퍼레이터의 용도는 이름에서 유추 가능하듯이 넓은(?) 어디에서(?) 무엇인가를 판단 혹은 지칭하는 것이다. 뭔가 말이 이상한데 예제를 통해 살펴보자.

[Python] 어느날 import sqlite3 가 실패하기 시작했다

우선 배경 설명부터 하자. OS X 환경에서 Homebrew를 통해 Python 및 기타 여러가지를 설치하고 사용하는 터미널 유저이다. 그리고 업무로 sqlite3를 이용하는 스크립트를 작성하고 있다. 일단은 잘 돌아가고 잘 사용하고 있는 스크립트이다. 그런데 어느날 부터 이 스크립트가 오동작 하기 시작했다. sqlite3 모듈을 import 하는 데서 오류가 발생하는 것이었다.

[Python] 데이터를 예쁘게(?) 찍어주기

제목을 정확히 쓰자면 'Data Pretty Print' 이다. Python에 기본적으로 포함되어 있는 pprint 모듈에 대해 간단히 소개하고자 한다. pprint는 말 그대로 Pretty Print 이긴 한데 이름 만으론 잘 감이 안 올 수도 있다. 이 모듈은 복잡한 자료구조의 내용을 조금 더 알기 쉽게 표시해 주는 역활이다.

[Python] 특정 디렉토리(폴더)의 모든 파일 이름 알아내기

이전에는 os.listdir이나 glob 같은걸 써서 재귀호출(recursive call)로 특정 디렉토리 아래의 모든 폴더를 순환하며 파일 이름을 모으는 코드를 만들곤 했었는데, 이는 순전히 무식해서 고생한 거였다. Python의 기본 모듈인 os.walk가 이런 역활을 하도록 이미 구축되어 있었다.

[Python] Nested 문법?

개인적으로 Python 언어로 코딩을 하면서 자주 안쓰게 되는 문법이 있다. 이 문법을 정확히 어떤 용어로 표현해야 하는지 몰라서 일단 'Nested 문법' 이라고 적었는데 틀린 표현 같지만 제목이 필요하기에 어거지로 썼다. C에 익숙했던 (비영어권) 사람이라면 아마도 Python이나 기타 스크립트 언어들 특유의 문법에 간혹 놀라기도 혹은 질리기도 한다. 스크립트 언어들의 독특한 문법 중 하나는 프로그래밍 언어를 마치 사람의 언어처럼 표현하기도 하거나 이 코드의 내용을 마구 줄여버리는 것이다. 참고로 이 글은 Python을 어느 정도 공부한 사람이라면 읽을 필요가 없다.

[Python] parse

간단한 문자열 파싱을 할 때는 대체로 정규표현식(re) 모듈을 많이 활용한다. 하지만 단순한 패턴을 읽어 낼 때는 정규표현식은 귀찮은게 많다. 이럴때는 간단하게 파싱 할 수 있게 도와주는 parse 모듈을 사용 할 수도 있다. 이 모듈의 설명은 아래 한줄이면 충분하다. parse() is the opposite of format() 앞서 소개했던 str.format()  과는 반대되는 기능을 제공한다는 의미이다. 이걸로 대충 설명은 끝나는 것 같다. :-)

[Python] str.format()

파이썬에선 기본적으로 C 스타일의 문자열 포맷 방법을 제공한다. printf나 sprintf 처럼 % 문자를 사용해서 문자열을 대체하는 것 말이다. 우연찮은 기회에 이 방법이 아닌 다른 방법으로 문자열을 포매팅 하는 방법(str.format)을 알게 되어서 이에 대해 가장 기본적인 사항을 포스팅을 해 본다. 우선 이 기능은 Python 2.6 부터 동작하며 일부는 2.7에서 추가된 기능도 있을 수 있다.

[Python] 인터프리터 테스트는 다르다

특정 모둘을 만들고 이 모듈을 파이썬 인터프리터로 테스트 할 때 간혹 문제가 생기는 케이스가 있다. 특히 PYTHONPATH와 함께 발생 할 수 있는 import 문제가 있다. 약간의 신중하지 못한 (혹은 무식한) 점이 이틀 간의 삽질로 나를 이끌었다. 아직도 명확한 원인은 모른다. 애초에 이런 디자인은 좋지 않다는 것을 되세기며 이번 포스팅을 기록으로 남긴다.

[Python] logging 의 중복 로그 현상

logging 을 사용해서 로그 찍는 루틴을 만들었는데, 로그를 찍을 때 마다 동일한 로그가 계속 하나씩 더 찍히는 현상을 경험했다. 로그1, 로그2, 로그2, 로그3, 로그3, 로그3, ... 이런 식이었다. 사실 현상이라기 보단 코딩을 잘못해서 나타난 문제이다. 하지만 이 문제 해결을 위해 너무나 귀찮은 짓을 다 해 봤기에 기억하자는 의미로 글을 남긴다.

[Python] fileDownloader.py

제목 만으로도 알 수 있겠지만, 그냥 웹 상의 파일을 다운로드 받을 수 있는 모듈이다. 물론 이 모듈 없이도 urllib과 httplib 등으로 받을 순 있지만 귀찮다. -_-;;;

Python용 PostgreSQL 인터페이스 psycopg2

psycopg2는 Python에서 PostgreSQL을 다루기 위한 인터페이스 모듈이다. 즉, PostgreSQL 서버에 접속하거나 쿼리를 보내거나 데이터를 읽어 오는 등의 기능을 Python으로 하기 위한 모듈 중 하나이다. 이번에는 이 psycopg2 모듈을 간단히 소개한다.

[Python] Python Debugger - pdb 기본 사용법

Eclipse같은 통합 IDE를 사용한다면 다른 이야기겠지만, 그 외의 경우라면 Python코드 디버깅은 쉬운 일은 아니다. 그나마 다행인 점은 pdb 모듈이 있다는 것.

간단한 웹 서버 aspen

단순한 웹 서버가 필요할 일이 있을까 생각했지만 의외로 필요한 경우가 제법 있다. 예를 들어 Sencha Touch 등을 이용한 웹 앱을 만드는 경우 AJAX 통신을 하려면 꼭 웹서버가 필요하다. 이럴 때는 필요한 기능만 제공하는 단순한 웹서버가 있으면 편하다. 하물며 요즘처럼 웹 개발이 대세인 시대에 이런 도구 하나쯤은 있는 편이 좋을 것 같다.

[Python] 단 하나의 프로세스만 실행 허용하기

필요에 의해 Python 스크립트가 실행 중일 때 동일한 스크립트가 실행되지 못 하도록 하는 방법.

[Vim] Python 오류 체크 플러그인 pyflakes.vim

이미지
pyflakes.vim 은 Python 코드 오류 체크 툴인 pyflakes를 Vim에서 좀 더 시각적으로 이용할 수 있게 해 주는 플러그인이다. Emacs에서 Flymake와 pyflakes를 이용해 오류 체크 하던 것과 거의 동일한 기능인 것 같다.

[Django] 파일 업로드 구현

Django로 구축한 서버에 파일 업로드 기능을 구현하는 방법에 대한 정리.

[Python] simplejson

Python용 JSON 파서/인코더 모듈인 simplejson 소개글.

Homebrew로 갈아타기: iPython 삽질기

Macport 의 문제점(의존성이나 빌드가 안되는 것 들, sudo가 필수) 때문에 벼르고 있다가 결국 Homebrew로 갈아타는 무모한 도전을 하고 있는 중이다.