모듈과 라이브러리 - 거인의 어깨 위에 서기

제1편

by 박정수

지금까지 우리는 직접 코드를 작성했습니다. 하지만 매번 처음부터 만들 필요가 있을까요?

# 지금까지 우리가 한 것

def calculate_average(numbers):

total = 0

for num in numbers:

total += num

return total / len(numbers)

# 하지만 이미 만들어진 도구가 있다면?

import numpy as np

average = np.mean(numbers) # 한 줄로 끝!


오늘 소개할 모듈(Module)과 라이브러리(Library)는 Python이나 다른 전문가들이 만들어 놓은 검증된 도구 상자입니다.

import의 개념과 사용법

필수 라이브러리 3 총사: math, random, datetime

데이터 과학의 핵심: numpy, matplotlib

나만의 모듈 만들기


즉, "바퀴를 다시 발명하지 마라!"


Part 1: import의 기초

1.1 모듈이란?

모듈(Module) = 파이썬 코드가 담긴

# 내장 모듈 사용하기

import math

# 원의 넓이 계산

radius = 5

area = math.pi * radius ** 2 #*는 곱하기, **는 제곱입니다

print(f"반지름 {radius}인 원의 넓이: {area:. 2f}")

# 출력:

반지름 5인 원의 넓이: 78.54


1.2 import의 다양한 방법

# 방법 1: 전체 모듈 가져오기

import math

print(math.sqrt(16)) # 4.0, root(16)=4

# 방법 2: 별명(alias) 사용

import math as m

print(m.sqrt(16)) # 4.0

# 방법 3: 특정 함수만 가져오기

from math

import sqrt, pi

print(sqrt(16)) # 4.0

print(pi) # 3.141592...


Part 2: 필수 내장 모듈 3 총사


2.1 math - 수학의 모든 것

import math # 기본 수학 함수

print(f"제곱근: {math.sqrt(25)}") # 5.0

print(f"거듭제곱: {math.pow(2, 10)}") # 1024.0

print(f"절댓값: {math.fabs(-5.5)}") # 5.5

# 삼각함수 (라디안 단위)

print(f"sin(π/2): {math.sin(math.pi/2)}") # 1.0

print(f"cos(0): {math.cos(0)}") # 1.0

# 로그

print(f"log(100): {math.log10(100)}") # 2.0

print(f"ln(e): {math.log(math.e)}") # 1.0

# 올림/내림/반올림

print(f"올림: {math.ceil(4.3)}") # 5

print(f"내림: {math.floor(4.9)}") # 4

# 상수

print(f"π = {math.pi}") # 3.141592...

print(f"e = {math.e}") # 2.718281...


실전 예제: 두 점 사이의 거리

import math

def distance(x1, y1, x2, y2):

"""두 점 사이의 거리 계산"""

return math.sqrt((x2-x1)**2 + (y2-y1)**2)

# 사용

dist = distance(0, 0, 3, 4)

print(f"거리: {dist}") # 5.0


2.2 random - 무작위의 마법

import random # 정수 난수

dice = random.randint(1, 6) # 1~6 사이 정수

print(f"주사위: {dice}") # 실수 난수

temperature = random.uniform(20.0, 30.0) # 20~30 사이 실수

print(f"온도: {temperature:. 1f}°C") # 리스트에서 무작위 선택

colors = ['빨강', '파랑', '노랑', '초록']

chosen = random.choice(colors)

print(f"선택된 색: {chosen}") # 리스트 섞기

cards = ['A', 'K', 'Q', 'J', '10']

random.shuffle(cards)

print(f"섞인 카드: {cards}") # 여러 개 뽑기 (중복 없이)

winners = random.sample(['철수', '영희', '민수', '지영', '현우'], 3)

print(f"당첨자: {winners}")


실전 예제: 로또 번호 생성기

import random

def generate_lotto():

"""로또 번호 생성 (1~45 중 6개)"""

numbers = random.sample(range(1, 46), 6)

numbers.sort()

return numbers # 5개 세트 생성

print("로또 번호 추천")

for i in range(5):

print(f"{i+1} 번: {generate_lotto()}")


로또 번호 추천

1번: [3, 12, 23, 34, 39, 42]

2번: [7, 15, 21, 28, 35, 44]

3번: [2, 9, 18, 27, 33, 41]

4번: [5, 14, 22, 31, 38, 45]

5번: [1, 11, 20, 29, 36, 43]


오늘 너무 긴 내용을 다뤘으니 2편에 조금 더 많은 범위를 공부하기로 해요.

이전 22화P-value를 for loop과 함수로 자동화하기