출처
라이브러리(library)
패키지(package)
- 특정 기능과 관련된 여러 모듈을 한 폴더 안에 넣어서 관리하는데 이를 패키지라고 함
- 예를 들어 test라는 폴더 안에
__init__.py
, test.py
와 같은 파일들이 모여 있는 것
모듈(module)
- 함수, 변수, 클래스를 모아 놓은 것
- 일반적으로 한 파일을 말함
- 예를 들어
.py
와 같은 하나의 파일 안에 함수와 변수, 클래스가 모여 있는 것
결론적으로 라이브러리>=패키지>=모듈로 볼 수 있음
함수(function)
- 특정 작업을 하는 독립된 기능을 수행하는 단위
예시
def function(val):
return val
print(function(8))
메서드(method)
- 클래스, 구조체, 열거형 등에 포함되어 있는 함수
- 클래스 안에 선언되어 있는 멤버 함수들이 이에 해당
- 클래스 함수라고도 부름
클래스와 메서드 사용 예시
class Object():
def method(self, val):
return val
obj = Object()
print(obj.method(8))
즉, 함수는 메서드보다 상위 개념이므로 매서드를 지칭할 때 포괄적으로 함수라 지칭할 수 있음
추가
함수 호출과 메서드 호출
def function(val):
for i in range(val):
val += i
return val
stime = time.time()
function(10000000)
func_time=time.time()-stime
print(func_time)
class Object():
def method(self, val):
for i in range(val):
val += i
return val
obj = Object()
stime = time.time()
obj.method(10000000)
method_time=time.time()-stime
print(method_time)
print(func_time-method_time)
SDK, API, 위젯, 모듈
SDK(Software Development Kit)
- 소프트웨어 개발 도구 모음
- API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티 등 다양한 개발 도구를 포함하고 있음
- 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능 집합으로 볼 수 있다
- 즉, 어떤 소프트웨어를 만들기 위한 도구 모음 == SDK
- API도 포함되어 있다는 게 특징
- 예: iOS SDK를 다운로드하면 개발자에게 iOS 애플리케이션을 만드는 데 필요한 모든 도구가 제공됨(개발자가 컴퓨터에서 iPhone 시뮬레이션을 할 수 있는 iPhone 시뮬레이터도 포함하고 있음)
API(Application Programming Interface)
- 어떤 기능을 제어/제공하는 인터페이스
- 우리가 사용하는 대부분의 애플리케이션은 API에 의존함
- 공공데이터 포털 같은 곳에서 무료로 배포하는 것도 있지만(Open API) 비공개(Private) API도 있음
- 일정 요금을 받고 일일 요청(Call) 횟수 제한을 해제해주거나 더 많은 데이터를 제공해주는 경우도 있음
- 일반적으로 API를 요청할 때 URL을 통해서 요청
- 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 개념
- API는 SDK의 일부가 될 수 있음
모듈(Module)
- 기능별로 작게 나누어진 프로그램 단위(개별 프로그램의 작은 단위)
- 코드를 모듈로 잘 구성했을 때의 장점
- 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용할 수 있다.
- 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
- 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
- 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
- (브라우저에서만 해당) 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드할 때 시간과 네트워크 트래픽을 절약할 수 있다.
- 예시: 윈도우 메모장
- 글쓰기, 저장, 글씨체 변경, 파일 읽어오기 등 여러 가지 기능이 있음
- 이렇게 작게 하나의 기능들로 이루어져 있는 프로그램을 모듈이라고 함
def add(a, b):
return a + b
def substract(a, b):
return a - b
- 비교적 최근에 등장한 개념
- 블로그에 붙이는 달력과 날씨, 그리고 트위터 댓글 위젯 등이 대표적
- 플러그인처럼 설치를 하거나 대여섯줄 분량의 소스를 원하는 자리에 붙이면 바로 실행 가능
- 플러그인이 자체적으로 완벽한 하나의 프로그램인 것에 비해 위젯은 프로그램을 호출하여 보여주는 방식임
- 예: 모바일 앱
- 라이브러리를 설치하여 하나의 컴포넌트를 구성하여 사용자에게 표출해주는 부분을 위젯으로 볼 수 있음