파이썬에서 모듈(module)은 관련된 함수, 클래스, 변수들을 하나의 파일(.py)로 묶어 재사용할 수 있게 만든 코드 단위이다.
모듈을 사용하면 프로그램을 기능별로 나누어 관리할 수 있어 코드의 가독성과 유지보수성이 향상되며, 다른 파일에서도 import 문을 통해 쉽게 불러와 사용할 수 있다. 파이썬은 기본적으로 다양한 표준 라이브러리 모듈을 제공하고, 사용자가 직접 만든 모듈도 동일한 방식으로 활용할 수 있다.
모듈 파일 만들기
# fruit.py
PI = 3.14
def print_fruit(name):
print(f"{name}입니다.")
def add_quantity(quantity, amount):
return quantity + amount
class Fruit:
def __init__(self, name, quantity):
self.name = name
self.quantity = quantity
def print_info(self):
print(f"과일 이름: {self.name}")
print(f"수량: {self.quantity}")
다른 파일에서 모듈 사용하기
# main.py
import fruit
fruit.print_fruit("사과")
result = fruit.add_quantity(10, 5)
print(result)
apple = fruit.Fruit("사과", 10)
apple.print_info()
from fruit import Fruit, add_quantity # 메모리의 효율성을 위해 필요한 함수나 클래스만 import
apple = Fruit('사과', 10)
apple.print_info()
print(add_quantity(10, 5))
# 👉 모듈 전체가 아니라 필요한 함수나 클래스만 가져올 수도 있습니다.
__name__
__name__은 파이썬에서 현재 실행 중인 모듈의 이름을 담고 있는 내장 변수로, 이 파일이 직접 실행된 것인지, import된 것인지 구분하는데 사용된다. 만약 파일을 직접 실행하면 __name__의 값은 "__main__"이 되고, 다른 파일에서 import되어 사용되면 해당 모듈의 파일 이름이 들어간다.
# fruit.py
def hello():
print("과일 모듈입니다.")
print("__name__ 값:", __name__)
if __name__ == "__main__":
print("직접 실행되었습니다.")
hello()
--------------------------------------------------
# 직접 실행
python fruit.py
# 결과
__name__ 값: __main__
직접 실행되었습니다.
과일 모듈입니다.
--------------------------------------------------
# 다른 파일에서 import
import fruit
# 결과
__name__ 값: fruit
# 👉 if __name__ == "__main__": 블록은 실행되지 않음
패키지
패키지(package)는 관련된 여러 모듈(.py 파일)을 하나의 폴더로 묶어 계층적으로 관리하는 단위로, 코드 규모가 커질 때 기능별로 구조를 나누어 정리하고 재사용성을 높이기 위해 사용된다. 패키지는 디렉토리로 구성되며, 내부에 모듈과 서브패키지를 포함할 수 있고, 필요에 따라 __init__.py 파일을 통해 패키지 초기화나 공개 API를 정의할 수 있다. 이를 통해 import package.module처럼 이름공간(namespace)을 구분하여 충돌을 방지하고, 프로젝트를 깔끔하게 구조화할 수 있다.
myproject/
├── main.py
└── fruits/
├── __init__.py
├── apple.py
└── banana.py
# fruits/__init__.py
from .apple import info as apple_info
from .banana import info as banana_info
__all__ = ["apple_info", "banana_info"]
# 👉 패키지에서 바로 사용할 API 정의
# fruits/apple.py
def info():
return "사과입니다"
# fruits/banana.py
def info():
return "바나나입니다"
# main.py
from fruits import apple_info, banana_info
print(apple_info())
print(banana_info())
# 사과입니다
# 바나나입니다
random 모듈
random 모듈은 파이썬에서 무작위 값을 생성할 때 사용하는 표준 라이브러리 모듈이다. 별도 설치 없이 import random으로 사용할 수 있으며, 임의의 숫자 생성, 리스트에서 랜덤 선택, 데이터 섞기, 난수 범위 지정 등에 자주 사용된다.
1. 자주 사용하는 함수
import random # random 모듈 import부터 진행
# 1. random.random() → 0 이상 1 미만 실수
print("random():", random.random()) # random(): 0.46855839871769966
# 2. random.randint(a, b) → a 이상 b 이하 정수
print("randint(1, 6):", random.randint(1, 6)) # randint(1, 6): 5
# 3. random.randrange(a, b) → a 이상 b 미만 정수
print("randrange(1, 10):", random.randrange(1, 10)) # randrange(1, 10): 9
# 4. random.choice() → 리스트에서 1개 선택
fruits = ["사과", "바나나", "오렌지"]
print("choice:", random.choice(fruits)) # choice: 바나나
# 5. random.sample() → 중복 없이 여러 개 선택
numbers = list(range(1, 11))
print("sample:", random.sample(numbers, 3)) # sample: [6, 5, 2]
# 6. random.shuffle() → 리스트 섞기
cards = ["A", "K", "Q", "J"]
random.shuffle(cards)
print("shuffle:", cards) # shuffle: ['Q', 'A', 'K', 'J']
2. seed()
random.seed()는 난수 생성기의 초기값(시드)을 설정하여 동일한 난수 결과를 재현 가능하게 만드는 함수이다. 파이썬의 random은 의사난수(pseudo-random)를 사용하므로 시드를 고정하면 실행할 때마다 같은 순서의 난수가 생성된다. 이 기능은 테스트, 디버깅, 머신러닝 실험처럼 결과를 반복 재현해야 하는 상황에서 매우 중요하다.
2 - 1 의사난수
의사난수(pseudo-random number)는 완전히 무작위로 생성된 것이 아니라, 일정한 알고리즘에 의해 만들어진 "랜덤처럼 보이는 숫자"를 의미한다. 즉, 내부적으로는 이전 값과 수학적 계산을 기반으로 다음 값을 생성하기 때문에 같은 시작값(시드, seed)을 주면 항상 동일한 난수 순서가 만들어진다. 이러한 특성 덕분에 결과를 재현할 수 있어 테스트나 머신러닝 실험에 매우 유용하며, 속도도 빠르기 때문에 일반적인 프로그래밍에서 널리 사용된다.
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.randint(1, 10))
# 👉 실행할 때마다 결과가 바뀜
# 시드 설정
random.seed(2026)
print(random.randint(1, 10))
print(random.randint(1, 10))
print(random.randint(1, 10))
# 👉 실행 결과 (항상 동일)
모듈 설치
1. 가상환경 생성
python -m venv venv
2. 가상환경 활성화
# windows
venv\Scripts\activate
# mac
source venv/bin/activate
3. pip 위치 확인
where pip # Windows
which pip # Mac/Linux
# 👉 venv 안 pip인지 확인
4. python 경로 확인
where python
# 👉 반드시 venv 경로여야 함
5. numpy, pandas 설치
pip install numpy pandas # pip이 다른 python을 가리키고 있을 수도 있음
python -m pip install numpy pandas # 현재 python이 사용하는 환경에 설치됨
6. 패키지 목록과 각 버전 확인
pip list
# 현재 환경 기준으로만 보여줌 (전역/다른 venv와 독립)
# 패키지 이름 + 버전 확인 가능
# 설치 여부 빠르게 체크 가능
requirements.txt
requirements.txt는 파이썬 프로젝트에서 필요한 외부 패키지와 그 버전을 기록해 두는 파일로, 동일한 개발 환경을 다른 사람이나 다른 시스템에서도 쉽게 재현할 수 있게 해준다.
1. requirements.txt 생성
pip freeze > requirements.txt
2. requirements.txt 사용 방법
pip install -r requirements.txt
# 👉 다른 환경에서 실행하면 파일에 있는 모든 패키지 자동 설치'Python' 카테고리의 다른 글
| 매직 메서드 (0) | 2026.05.29 |
|---|---|
| 예외처리 (0) | 2026.05.29 |
| 객체지향 프로그램 4대 패러다임 (1) | 2026.05.28 |
| 객체지향 프로그래밍 (0) | 2026.05.28 |
| 사용자 정의 함수 part2 (0) | 2026.05.28 |