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