프로그래밍 언어 35

unittest, Test-driven develope를 위한 라이브러리

Test-driven develop(TDD)는 개발이 끝난 후에 테스트를 진행하는 것이 아니라, 작은 단위의 기능을 수행하는지 여부를 테스트를 통과한 코드를 전체 코드에 리팩토링해 병합하는 방식의 개발 방법을 이야기합니다. TDD의 시작은 unittest를 작성하는 것입니다. Unit test code를 테스트 하는 것은 bug가 없이 의도한 바를 구현하는데 중요하지만 데이터 사이언스에서 쉽게 간과됨 프로젝트가 커지고 복잡해짐에 따라 예상치 못한 버그가 발생할 가능성이 매우 높음 unittest는 작성한 코드가 의도한대로 작동하는지 여부를 검증하는 과정 unit test의 필요성 testing을 작성하는 것은 문제가 없이 clean하고 사용성 높은 코드를 작성하는데 필수적임 어느 이상의 양을 가지는 복잡..

pyforest, 42개의 라이브러리를 한 줄의 코드로 import

Feel the bliss of automated imports[1] 데이터 분석을 위해 프로그램을 작성할 때 기본적으로 임포트해야하는 pandas, numpy, matplotlib, sklearn 등의 라이브러리들이 있음 pyforest는 여러 줄의 import ~ 를 적는 수고를 덜어줄 수 있는 라이브러리임 관습에 따라 pandas as pd, numpy as np, matplotlib.pyplot as plt임포트 해주어 기존에 사용하던 그대로 코드 작성을 하면됨 설치 jupyter 셀에서 pip을 사용해 설치할 수 있음 !pip install pyforest 적용 예 import pyforest로 pyforest를 임포트하면 42개의 라이브러리가 자동으로 임포트 됨 다음의 방식으로 임포트 된 라이..

matplotlib 사용시 메모리 누수

Memory Leakage 프로그램이 불필요한 메모리를 점유하고 있는 것을 메모리 누수(memory leakage)[1] 메모리 누수를 발생시키는 요인 중 matplotlib 라이브러리를 사용할 때 메모리 누수가 발생하기 쉬움 각 iteration마다 이미지를 그리는데 필요한 메모리를 할당하고 이미지를 저장하는데 다음 iteration으로 넘어가도 해당 메모리를 점유하기 때문에 다음과 같은 경우에 메모리 누수가 발생 메모리 사용량 추적을 위해 다음 블로그의 코드를 사용했습니다.[2] import matplotlib.pyplot as plt import numpy as np memory_ = np.zeros(100) dummy_data = np.random.rand(100,100,100,3) for i i..

보기 좋은 쉼표 배치

이 글은 슬기로운 파이썬 트릭의 내용을 정리한 글입니다. 2.2 보기 좋은 쉼표배치 파이썬의 리스트, 딕셔너리, 세트 상수에서 항목을 추가, 제거할 때 유용한 팁 git과 같은 소스 컨트롤 시스템에서 변화를 보여줄 때 line별로 표시를 함 아래와 같이 names 리스트를 한 행에 선언하면 수정사항을 확인하기 곤란함 names = ['Alice', 'Bob', 'Dilbert'] 모든 행을 쉼표로 끝내자 다음과 같이 names 리스트를 여러 행에 걸쳐 선언하면 수정사항을 보기 편리함 ```python names = [ 'Alice', 'Bob', 'Dilbert' ] ``` 이렇게 작성했을 때, 수정사항을 명확하게 볼 수 있지만 콤마(,)를 빼먹어 예상치 못한 버그를 만들 수 있음 python에서 공백으..

assert문으로 디버깅

이 글은 슬기로운 파이썬 트릭의 내용을 정리한 글입니다.2.1 assert(단언)문으로 방어하기단언문은 어떤 조건을 테스트하는 디버깅 도구로 유용하다.프로그램을 작성할 때 예상 범위 외로 벗어날 때 에러를 발생시킨다.assert 조건에서 벗어난 경우에 에러를 발생시킨다.## assertassert expression1, 'expression2'assert 프로그램에서 만족할 것으로 생각하는 조건이고, expression2는 expression1이 False일 때 에러와 함께 출력할 표현이다.예외처리를 하지 않는 이유 (try... except ...)에러를 발생시켜 다시 시도할 수 있는 버그가 아니라 프로그램은 실행되지만 존재하는 버그를 찾는데 활용할 수 있다.따라서 디버깅을 할 때, 프로그램을 중단시키..