반응형
Day 1: 패키지의 기본 개념
- 강의 내용:
- 패키지의 정의와 필요성
- 패키지의 개념과 장점
- 코드 조직화와 재사용성 향상
- 패키지 구조
- 디렉토리 구조와 __init__.py 파일
- 패키지의 정의와 필요성
- 실습:
- 간단한 패키지 생성 및 사용 예제
# 패키지 구조
# mypackage/
# ├── __init__.py
# └── module1.py
# mypackage/__init__.py (빈 파일)
# mypackage/module1.py
def greet(name):
return f"Hello, {name}!"
# 패키지 임포트 및 사용
from mypackage import module1
print(module1.greet("Alice")) # 'Hello, Alice!'
Day 2: 패키지와 모듈 임포트
- 강의 내용:
- 패키지 임포트
- from ... import ... 문법
- from ... import ... as ... 문법을 사용한 별칭 지정
- 상위 디렉토리에서 패키지 임포트
- sys.path를 사용한 경로 추가
- 패키지 임포트
- 실습:
- 다양한 패키지 임포트 예제 작성
# 패키지 임포트 예제
from mypackage import module1
print(module1.greet("Bob")) # 'Hello, Bob!'
# 별칭을 사용한 패키지 임포트
from mypackage import module1 as mod1
print(mod1.greet("Charlie")) # 'Hello, Charlie!'
# 상위 디렉토리에서 패키지 임포트
import sys
sys.path.append('/path/to/parent_directory')
from mypackage import module1
print(module1.greet("Dave")) # 'Hello, Dave!'
Day 3: __init__.py 파일
- 강의 내용:
- __init__.py 파일의 역할
- 패키지를 디렉토리로 인식시키기
- 패키지 초기화 코드 포함
- __init__.py 파일의 활용 예제
- __init__.py 파일의 역할
- 실습:
- __init__.py 파일을 사용한 패키지 예제 작성
# mypackage/__init__.py
print("mypackage 패키지가 임포트되었습니다.")
# mypackage/module1.py
def greet(name):
return f"Hello, {name}!"
# 패키지 임포트 및 사용
import mypackage
from mypackage import module1
print(module1.greet("Eve")) # 'Hello, Eve!'
Day 4: 하위 패키지
- 강의 내용:
- 하위 패키지의 개념
- 하위 패키지 생성 및 구조
- 하위 패키지 임포트
- 하위 패키지 사용 예제
- 하위 패키지의 개념
- 실습:
- 하위 패키지를 사용한 예제 작성
# 패키지 구조
# mypackage/
# ├── __init__.py
# ├── module1.py
# └── subpackage/
# ├── __init__.py
# └── module2.py
# mypackage/subpackage/__init__.py (빈 파일)
# mypackage/subpackage/module2.py
def farewell(name):
return f"Goodbye, {name}!"
# 패키지 임포트 및 사용
from mypackage import module1
from mypackage.subpackage import module2
print(module1.greet("Frank")) # 'Hello, Frank!'
print(module2.farewell("Frank")) # 'Goodbye, Frank!'
Day 5: 상대 경로 임포트
- 강의 내용:
- 상대 경로 임포트의 개념
- 상대 경로를 사용한 모듈 임포트
- .과 ..을 사용한 상대 경로
- 상대 경로 임포트 사용 예제
- 상대 경로 임포트의 개념
- 실습:
- 상대 경로를 사용한 모듈 임포트 예제 작성
# mypackage/module1.py
from .subpackage import module2
def greet_and_farewell(name):
greeting = greet(name)
farewell = module2.farewell(name)
return f"{greeting} {farewell}"
# 패키지 임포트 및 사용
from mypackage import module1
print(module1.greet_and_farewell("Grace")) # 'Hello, Grace! Goodbye, Grace!'
Day 6: 패키지 배포
- 강의 내용:
- 패키지 배포의 개념
- 패키지 배포를 위한 준비
- setup.py 파일 작성
- 패키지 배포 과정
- 패키지 배포를 위한 도구 (setuptools, wheel)
- 패키지 배포 및 설치
- 패키지 배포의 개념
- 실습:
- 간단한 패키지 배포 예제 작성
# setup.py 파일 작성
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1",
packages=find_packages(),
)
# 패키지 배포
# 터미널에서 실행:
# python setup.py sdist bdist_wheel
# 패키지 설치
# 터미널에서 실행:
# pip install mypackage-0.1-py3-none-any.whl
Day 7: 패키지 종합 연습 및 프로젝트
- 강의 내용:
- 패키지 종합 연습 문제 풀이
- 다양한 패키지 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 패키지를 활용한 프로그램 구현 및 테스트
- 패키지 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 간단한 수학 패키지 작성
# mathpackage/__init__.py (빈 파일)
# mathpackage/operations.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
# main.py
from mathpackage import operations
print(operations.add(3, 5)) # 8
print(operations.subtract(10, 4)) # 6
# 연습 문제 2: 패키지 내에서 상대 경로를 사용한 모듈 임포트
# mypackage/module1.py
from .subpackage import module2
def greet_and_farewell(name):
greeting = greet(name)
farewell = module2.farewell(name)
return f"{greeting} {farewell}"
# 미니 프로젝트 예제: 데이터 처리 패키지
# datapackage/__init__.py (빈 파일)
# datapackage/reader.py
def read_data(file_path):
with open(file_path, "r") as file:
return file.readlines()
# datapackage/processor.py
def process_data(data):
return [line.strip().upper() for line in data]
# datapackage/writer.py
def write_data(file_path, data):
with open(file_path, "w") as file:
file.writelines(data)
# main.py
from datapackage import reader, processor, writer
data = reader.read_data("input.txt")
processed_data = processor.process_data(data)
writer.write_data("output.txt", processed_data)
print("Data processing complete.")
이 강의는 파이썬의 패키지를 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 18: 객체지향 프로그래밍 - 메서드 (0) | 2024.06.01 |
---|---|
[Python] (수정 필요)Week 17: 객체지향 프로그래밍 - 클래스와 객체 (0) | 2024.06.01 |
[Python] Week 15: 모듈 (0) | 2024.06.01 |
[Python] Week 14: 예외 처리 (0) | 2024.06.01 |
[Python] Week 13: 파일 입출력 (0) | 2024.06.01 |