안녕하세요! 지난 시간에는 파이썬 코드를 효율적으로 관리하는 핵심 도구인 모듈에 대해 알아보았는데요. 오늘은 한 단계 더 나아가, 여러 개의 모듈을 묶어서 관리하는 패키지 (Package) 와 파이썬에서 기본적으로 제공하는 유용한 내장 모듈 들에 대해 자세히 살펴보겠습니다. 마치 잘 정리된 서류철과 기본적으로 갖춰진 사무용품 세트 같다고 생각하시면 돼요! 💼
📦 패키지 (Package): 모듈들을 폴더처럼 관리하세요!
개념 및 필요성
패키지는 관련된 모듈들을 하나의 디렉토리 (폴더) 안에 묶어 놓은 것 입니다. 마치 여러분의 컴퓨터에서 파일들을 폴더별로 정리하는 것과 같은 개념이죠.
패키지를 사용하는 이유는 다음과 같습니다:
- 모듈 관리의 용이성: 여러 개의 모듈을 논리적으로 그룹화하여 관리하기 쉽습니다. 프로젝트 규모가 커질수록 패키지의 필요성은 더욱 커집니다. 마치 서랍장 안에 칸막이를 만들어 정리하는 것과 같아요! 🗄️
- 이름 충돌 방지: 서로 다른 패키지 안에 같은 이름의 모듈이 존재하더라도 충돌을 방지할 수 있습니다. 마치 다른 회사의 같은 이름의 제품을 구분하는 것과 같습니다. 🏢
- 코드의 구조화 및 가독성 향상: 코드를 의미 있는 단위로 나누어 관리함으로써 전체적인 프로젝트 구조를 파악하기 쉽고 코드의 가독성을 높여줍니다. 마치 책을 챕터별로 나누는 것과 같아요! 📖
구조
패키지는 계층적인 구조를 가질 수 있습니다. 즉, 패키지 안에 또 다른 패키지 (서브패키지)를 포함할 수 있습니다.
my_project/
├── main.py
└── my_package/
├── __init__.py
├── module1.py
└── sub_package/
├── __init__.py
└── module2.py
위 예시에서 my_package는 하나의 패키지이며, 그 안에 module1.py라는 모듈과 sub_package라는 서브패키지를 가지고 있습니다. 중요한 점은 각 패키지 디렉토리에는 반드시 __init__.py 라는 파일이 있어야 한다는 것입니다. 이 파일은 해당 디렉토리를 파이썬 패키지로 인식하도록 만들어주는 역할을 합니다. __init__.py 파일은 비어 있을 수도 있고, 패키지 초기화 코드를 포함할 수도 있습니다.
임포트 방법
패키지 안의 모듈을 임포트하는 방법은 다양합니다.
- 패키지 전체 임포트:패키지 이름과 모듈 이름을 점(.)으로 연결하여 임포트하고, 함수를 호출할 때도 같은 방식으로 접근합니다.
import my_package.module1 my_package.module1.some_function()
- 특정 모듈 임포트:from 키워드를 사용하여 패키지에서 특정 모듈만 직접 임포트하여 사용할 수 있습니다.
from my_package import module1 module1.some_function()
- 서브패키지 안의 모듈 임포트:서브패키지 안의 모듈도 마찬가지로 점(.)을 사용하여 접근할 수 있습니다.
import my_package.sub_package.module2 my_package.sub_package.module2.another_function()
- 서브패키지에서 특정 이름 임포트:from 키워드를 사용하여 서브패키지에서 특정 모듈을 직접 임포트할 수 있습니다.
from my_package.sub_package import module2 module2.another_function()
- 모듈 안의 특정 이름 임포트:모듈 안의 특정 함수나 클래스만 직접 임포트하여 사용할 수도 있습니다.
from my_package.module1 import some_function some_function()
⚙️ 자주 사용되는 내장 모듈: 파이썬 기본 기능들을 편리하게!
파이썬은 다양한 기능을 미리 구현해 놓은 내장 모듈 들을 제공합니다. 별도의 설치 없이 바로 사용할 수 있어 매우 편리합니다. 몇 가지 자주 사용되는 내장 모듈들을 살펴볼까요?
- math: 수학적인 계산을 위한 함수들을 제공합니다. (예: math.sqrt() - 제곱근 계산, math.sin() - 사인 값 계산, math.pi - 원주율 상수)
import math print(math.sqrt(25)) # 출력 결과: 5.0 print(math.pi) # 출력 결과: 3.141592653589793
- random: 무작위 수 생성과 관련된 함수들을 제공합니다. (예: random.randint(a, b) - a와 b 사이의 랜덤한 정수 생성, random.random() - 0.0과 1.0 사이의 랜덤한 실수 생성, random.shuffle(list) - 리스트의 요소들을 무작위로 섞음)
import random print(random.randint(1, 10)) # 1부터 10 사이의 랜덤한 정수 출력 my_list = [1, 2, 3, 4, 5] random.shuffle(my_list) print(my_list) # 리스트의 요소들이 무작위로 섞인 결과 출력
- datetime: 날짜와 시간 관련 작업을 위한 클래스들을 제공합니다. (예: datetime.datetime.now() - 현재 날짜와 시간 얻기, datetime.date() - 날짜 객체 생성, datetime.time() - 시간 객체 생성)
import datetime now = datetime.datetime.now() print(now) # 현재 날짜와 시간 출력 today = datetime.date(2025, 3, 27) print(today) # 2025-03-27 출력
- os: 운영체제와 상호작용하기 위한 함수들을 제공합니다. (예: os.getcwd() - 현재 작업 디렉토리 얻기, os.listdir() - 특정 디렉토리 안의 파일 및 디렉토리 목록 얻기, os.mkdir(path) - 새로운 디렉토리 생성)
import os print(os.getcwd()) # 현재 작업 디렉토리 경로 출력 print(os.listdir('.')) # 현재 디렉토리 안의 파일 및 디렉토리 목록 출력 # os.mkdir('new_directory') # 'new_directory'라는 새로운 디렉토리 생성 (실행 시 주의)
- sys: 파이썬 인터프리터와 관련된 변수 및 함수들을 제공합니다. (예: sys.path - 모듈 검색 경로 목록, sys.argv - 명령행 인수 목록, sys.exit() - 프로그램 종료)
import sys print(sys.path) # 파이썬 모듈 검색 경로 목록 출력 # print(sys.argv) # 명령행 인수 목록 출력 (스크립트 실행 시 전달된 인수를 확인) # sys.exit() # 프로그램 종료 (실행 시 주의)
이 외에도 파이썬은 수많은 유용한 내장 모듈들을 제공합니다. 필요에 따라 다양한 모듈들을 찾아보고 활용해 보세요! 💡
마무리하며
오늘은 파이썬 패키지의 개념과 필요성, 그리고 자주 사용되는 내장 모듈들에 대해 알아보았습니다. 패키지를 통해 여러분의 프로젝트를 더욱 체계적으로 관리하고, 내장 모듈을 활용하여 더욱 쉽고 빠르게 원하는 기능을 구현할 수 있습니다. 앞으로 파이썬 프로그래밍을 하면서 이 두 가지 개념을 잘 활용해 보시길 바랍니다! 😊
'프로그래밍 > Python' 카테고리의 다른 글
[Python]객체 지향 프로그래밍 (OOP) (2): 상속 (Inheritance) - 코드 재사용의 마법! ✨ (2) | 2025.03.28 |
---|---|
[Python]객체 지향 프로그래밍 (OOP) (1): 클래스와 객체💡 (6) | 2025.03.28 |
[Python]파이썬, 효율적인 코딩: 모듈 🧩 (2) | 2025.03.28 |
[Python]파이썬 람다(Lambda) 함수✨ (6) | 2025.03.27 |
[Python]파이썬 함수와 모듈 완전 정복: 함수 정의부터 스코프까지! 🚀 (6) | 2025.03.25 |