Introduction Poetry는 Python 개발 시 패키지의 의존성을 관리하는 라이브러리이며, 자바의 Maven이나 Gradle과 비슷한 Tool이라고 볼 수 있다. 또한 Virtualenv와 같이 가상 환경 설정을 지원해, 보다 포괄적인 의미의 기능도 있으며 build / publish 같은 배포까지도 가능한 범용적인 Tool로도 사용할 수 있다. pip과는 다르게 .toml, .lock 파일을 생성해 의존성을 관리한다.
.toml: 프로젝트 의존성읠 메타 데이터 저장
프로젝트와 의존성들 간의 충돌을 해결해준다. .lock: 설치된 패키지들의 version, hash 저장
해당 파일을 사용해 프로젝트 의존성을 다른 환경에서도 동일하게 유지할 수 있도록 해준다.
Makefile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 .PHONY: build start stop test clean init_mongo # Image configuration IMAGE_NAME = session_2-python-app DEFAULT_TAG = latest # =========================== # Export Python dependencies # =========================== _requirements: @echo "==============================================" @echo "Exporting Python dependencies to requirements.
Introduction 일반적으로 클래스 혹은 패키지 안의 함수를 사용하려면 다음과 같이 사용할 수 있다.
1 2 3 import numpy as np arr = np.array([1]) # numpy 페키지 안의 array() 함수 호출 getattr(object, "NAME")이라는 함수는 object 내부의 name이라는 멤버를 반환한다. numpy 패키지에서 array라는 이름의 함수를 사용하고 싶다면 패키지 이름 뒤에 .을 사용해서 함수를 호출할 수 있다. getattr()는 이와 완전히 동일하게 동작한다.
즉,getattr(np, "array")([1]) == np.array([1]).
getattr() 활용 두개가 동일하다면 왜 굳이 사용하는 것일까?
Introduction Property는 객체의 속성을 제어할 때 유용하게 사용되는 기능이며 데이터 캡슐화를 위한 방법이다.
직접 접근 사람의 이름, 나이, 연봉 데이터를 가진 클래스를 만들어본다. 밑의 Person 클래스는 name, age, salary 3개의 필드로 이루어져 있다.
1 2 3 4 5 class Persion(): def __init__(self, name, age, salary): self._name = name self._age = age self._salary = salary Person 클래스의 인스턴스를 생성한 후, 현재 필드 값을 읽거나 새로운 필드 값을 쓰는 것은 매우 자유롭다.(하지만 이는 지양해야 한다.
Introduction 어떤 언어로 코딩을 하던 단위 테스트는 신뢰할 수 있는 애플리케이션을 개발하기 위해서 필수적으로 습득해야 하는 기술이다. 파이썬에서는 내장 모듈인 unittest를 통해서 다른 라이브러리 없이 비교적 간단하게 단위 테스트를 수행할 수 있다.
unittest 모듈 unittest 모듈은 Java의 JUnit, Javascript의 Jest 또는 Mocha와 같은 단위 테스트 프레임워크이다. 다만 다른 언어와 달리 기본적으로 언어에 내장되어 있기에 파이써만 설치가 되어 있다면 바로 모듈을 불러와 사용할 수 있다.
TestCase 클래스 unittest 모듈의 TestCase 클래스는 단위 테스트에 필요한 다양한 유틸리티 메소드를 제공한다.