Modules

감자·2024년 4월 22일
0

TIL Python

목록 보기
15/16
post-thumbnail

Python에서의 모듈은 코드를 그룹화해서 정리한 단위를 뜻합니다.

모듈은 함수, 클래스, 변수, 실행 가능한 코드 등을 포함할 수 있으며, 이것들을 하나의 파일에 담에 다른 스크립트에 적용할 수 있습니다.

모듈의 특징

  1. 재사용성
    코드를 분할하여 필요할 때 재사용할 수 있도록하여, 개발 시간을 절약하고 코드의 일관성을 유지하는데 도움이 됩니다.
  2. 조직화
    관련 기능과 데이터를 모듈로 구분함으로써 프로젝트의 구조를 더 명확하게 할 수 있습니다.
  3. 네임스페이스 분리
    모듈은 자체적인 네임스페이스를 가지는데, 모듈 내 정의된 이름이 다른 모듈과 충돌하지 않도록 해야합니다.



모듈의 사용법

모듈을 사용하려면 import문을 사용하여 모듈을 로드합니다.

import math

또한, from키워드를 사용하여 모듈의 특정 부분만을 가져올 수 있습니다.

from math import sqrt



모듈의 종류

Python의 모듈 중 주요 명령어들에 대해 설명드리겠습니다. 아래의 모듈들을 자주 사용되는 것들입니다.

1. math

이는 수학적 연산을 위한 함수들을 제공합니다.

함수 및 클래스역할
math.sqrt(x):x의 제곱근을 반환
math.sin(x)x의 사인 값을 반환
math.cos(x)x의 코사인 값을 반환
math.log(x, base)x의 로그 값을 반환

예시

import math
print(math.sqrt(16))  # 제곱근 계산
# 출력 : 4

2. sys

Python 인터프리터와 상호작용하는 데 필요한 함수 및 변수들을 제공합니다.

함수 및 클래스역할
sys.argv명령줄 인수 리스트를 반환
sys.exit()인터프리터를 종료
sys.path모듈을 찾는 경로의 리스트
sys.version설치된 Python의 버전 정보를 문자열로 반환

예시

import sys
print(sys.version)  # 출력 : 3.10.12 (자신이 설치한 버전이 나옴)

3.os

운영체제 상호작용하는 데 필요한 기능을 제공합니다.

함수 및 클래스역할
os.getcwd()현재 작업 디렉토리를 반환
os.chdir(path)작업 디렉토리를 변경
os.listdir(path)지정된 경로의 파일 및 디렉토리 목록을 반환
os.mkdir(path)새 디렉토리를 생성

예시

import os
print(os.getcwd())  # 현재 작업 디렉토리 출력

4. io

파일 처리 및 스트림 처리를 위한 기능 제공합니다.

함수 및 클래스역할
io.StringIO()문자열 데이터에 대한 파일과 같은 객체를 생성
io.BytesIO()바이트 데이터에 대한 파일과 같은 객체를 생성

예시

import io
s = io.StringIO("Hello World")
print(s.read())  # 출력 : Hello World

5. json

JSON 데이터를 읽고 쓰는 데 사용됩니다.

함수 및 클래스역할
json.dumps(obj)객체를 JSON 형식의 문자열로 변환
json.loads(s)JSON 문자열을 파이썬 객체로 변환

예시

import json
data = {'name': 'John', 'age': 30}
json_str = json.dumps(data)
print(json_str)  # 출력 : {"name": "John", "age": 30}

6. datetime

날짜와 시간을 처리하기 위한 클래스와 함수들을 제공합니다.

함수 및 클래스역할
datetime.datetime.now()현재 날짜와 시간을 반환
datetime.date.today()오늘의 날짜를 반환
datetime.timedelta(days)지정된 일수만큼의 시간 차를 나타내는 객체를 생성

예시

from datetime import datetime, timedelta

today = datetime.now()
ten_days_later = today + timedelta(days=10)

print("오늘 날짜:", today.strftime("%Y-%m-%d")) # 출력 : 오늘 날짜: 2024-04-22
print("10일 후:", ten_days_later.strftime("%Y-%m-%d")) # 출력 : 10일 후: 2024-05-02

7. random

난수를 생성하는 다양한 함수와 클래스를 제공합니다.

함수 및 클래스역할
random.random()0과 1 사이의 랜덤 실수를 반환
random.randint(a, b)a와 b 사이의 랜덤 정수를 반환

예시

import random
print(random.randint(1, 10))  # 1과 10 사이의 랜덤 정수 생성

8. re

여기 포스팅에 더 자세한 설명이 써있습니다.

9. threading

스레드 기반 병렬 처리를 위한 도구를 제공합니다.

함수 및 클래스역할
threading.Thread(target)새로운 스레드를 생성
thread.start()스레드를 시작
thread.join()스레드가 종료될 때까지 대기

예시

import threading

def print_number():
    for i in range(5):
        print(i)

t = threading.Thread(target=print_number)
t.start()
t.join()

위의 코드는 코드가 끝날 때까지 대기했다가 코드가 다 돌아간 후 출력이 뜹니다.

10. pickle

파이썬 객체 직렬화와 역직렬화를 위한 도구를 제공합니다.

함수 및 클래스역할
pickle.dumps(obj)객체를 직렬화
pickle.loads(data)직렬화된 데이터를 객체로 역직렬화
import pickle
data = {'key': 'value'}
serialized = pickle.dumps(data)  # 직렬화
new_data = pickle.loads(serialized)  # 역직렬화
print(new_data) # 출력 : {'key': 'value'}

직렬화 : 파이썬 객체를 바이트 스트림으로 변환하는 과정
역직렬화 : 저장되었거나 전송받은 바이트 스트림을 다시 원래의 파이썬 객체로 복원하는 작업
바이트 스트림 : 연속적인 바이트들의 시퀀스. 바이트 스트림은 파일에 저장하거나 네트워크를 통해 다른 컴퓨터로 전송



Python에는 이 외에도 많은 모듈이 있습니다. 전체 목록을 보고 싶다면 Python 공식 문서를 참조하거나, Python 환경에서 help('modules') 명령을 실행하여 확인할 수 있습니다.

profile
감자와 함께 떠나는 프로그래밍 여행

0개의 댓글