[python] library, package, module 차이 / function, method 차이

Suhyeon Lee·2025년 1월 14일
0

자기주도학습

목록 보기
79/83
post-thumbnail

출처

라이브러리(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의 일부가 될 수 있음
    • 결론적으로 SDK > API와 같은 관계

모듈(Module)

  • 기능별로 작게 나누어진 프로그램 단위(개별 프로그램의 작은 단위)
  • 코드를 모듈로 잘 구성했을 때의 장점
    1. 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용할 수 있다.
    2. 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다.
    3. 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
    4. 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
    5. (브라우저에서만 해당) 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드할 때 시간과 네트워크 트래픽을 절약할 수 있다.
  • 예시: 윈도우 메모장
    • 글쓰기, 저장, 글씨체 변경, 파일 읽어오기 등 여러 가지 기능이 있음
    • 이렇게 작게 하나의 기능들로 이루어져 있는 프로그램을 모듈이라고 함
# my_module.py
def add(a, b):
    return a + b
 
def substract(a, b):
    return a - b
  • 여러 기능을 가진 하나의 모듈을 만들어 관리하여 재사용하거나 유지보수를 용이하게 할 수 있음

  • 모듈과 API

    • 공통점
      • 한 가지 동작을 한다
    • 차이점
      • 모듈은 해당되는 프로그램에 속한 기능
      • API는 외부 소프트웨어에서 꺼내갈 수 있는 기능

위젯(Widget)

  • 비교적 최근에 등장한 개념
    • 블로그에 붙이는 달력과 날씨, 그리고 트위터 댓글 위젯 등이 대표적
  • 플러그인처럼 설치를 하거나 대여섯줄 분량의 소스를 원하는 자리에 붙이면 바로 실행 가능
    • 플러그인이 자체적으로 완벽한 하나의 프로그램인 것에 비해 위젯은 프로그램을 호출하여 보여주는 방식임
  • 예: 모바일 앱
    • 라이브러리를 설치하여 하나의 컴포넌트를 구성하여 사용자에게 표출해주는 부분을 위젯으로 볼 수 있음
profile
2 B R 0 2 B

0개의 댓글

관련 채용 정보