AWS Cloud School 13기 3일차

Forever 김·2025년 12월 29일

AWS Cloud School

목록 보기
3/97

오늘 12월 29일 월요일 입니다. 오늘 아주 엄청난 일이 있었다. 내 Gram 충전기 고장... 하 내 4만원 원래 고장이 났었는데 그래도 충전이 됬었는데... 그만 임기를 다하고 갔습니다. 그래서 예 새로 구매했는데 내일 온답니다 그래서 오늘 기분이 안좋았다가 성적이 나왔는데 생각보다 잘 나와서 다시 기분이 좋아졌답니다. 그래서 오늘의 교훈 미리미리 사자

오늘의 수업

파이썬을 배웠는데 심화프로그래밍을 통해 배운 부분이 많아서 배운 부분은 제외하고 새로 알게 된 점을 위주로 velog를 작성 하겠습니다


키워드 인자(keyword Argument)

인자를 이름으로 지정하면 순서에 상관없이 전달할 수 있다.

def introduce(name, age, city):
    print(f"저는 {city}에 사는 {age}{name}입니다.")

# 위치 인자 (순서 중요!)
introduce("철수", 25, "서울")

# 키워드 인자 (순서 상관없음!)
introduce(city="부산", name="영희", age=22)

# 혼합 사용 (위치 인자가 먼저!)
introduce("민수", city="대전", age=30)

LEGB 규칙

파이썬은 변수를 찾을 때 다음 순서로 탐색
L : Local -> E : Enclosing -> G : Global -> B : Bulit-in


독스트링(Docstring)

함수의 설명을 작성하는 문서화 문자열

def calculate_bmi(weight, height):
    """체질량지수(BMI)를 계산합니다.
    
    Args:
        weight (float): 체중 (kg)
        height (float): 키 (m)
    
    Returns:
        float: BMI 수치
    
    Examples:
        >>> calculate_bmi(70, 1.75)
        22.86
    """
    bmi = weight / (height ** 2)
    return round(bmi, 2)

확인하기

# help() 함수로 확인
help(calculate_bmi)

# __doc__ 속성으로 확인
print(calculate_bmi.__doc__)

모듈과 패키지

pip으로 패키지 설치하기

기본 명령어

# 패키지 설치
pip install requests

# 특정 버전 설치
pip install requests==2.28.0

# 패키지 삭제
pip uninstall requests

# 설치된 패키지 목록
pip list

# 패키지 정보 확인
pip show requests

requirements.txt 사용하기

실무에서는 프로젝트에 필요한 패키지 목록을 파일로 관리

# 현재 설치된 패키지를 파일로 저장
pip freeze > requirements.txt

# 파일에 있는 패키지 한번에 설치
pip install -r requirements.txt

가상환경(venv)가 필요한 이유

프로젝트마다 필요한 라이브러리 버전이 다를 수 있다.
하나의 Python에 모두 설치하면 버전 충돌이 발생
그래서 해결책은 가상 환경으로 프로젝트별 독립된 Python 환경을 만들어준다.

사용법

  1. 가상환경 생성
# 프로젝트 폴더로 이동
cd my_project

# 가상환경 생성 (venv라는 이름의 폴더가 생김)
python -m venv venv
  1. 활성화
# Windows
venv\Scripts\activate

활성화되면 터미널 앞에 (venv)가 표시됩니다.
3. 작업

# 가상환경 안에서 패키지 설치
(venv) pip install requests

# 이 패키지는 이 가상환경에만 설치됨!
  1. 비활성화
deactivate

예외 처리

예외(Exception) : 프로그램 실행 중 발생하는 예상치 못한 상황
처리(Handling) : 그 상황을 대응하고 해결하는 것

try:
	result = 10 / 0 # 문제가 생길 수 있는 코드
except ZeroDivisionError:
	print("에러: 0으로 나눌 수 없습니다")

에러 vs 예외

에러(Error)

  • 프로그램이 실행조차 되지 않는 심각한 문제
  • 예: 문법 에러(SyntaxError)

예외(Exception)

  • 프로그램 실행 중 발생하는 문제
  • 적절히 처리하면 프로그램을 계속 실행할 수 있음
  • 예: 0으로 나누기, 파일이 없음, 잘못된 입력 등

예외 처리 구조

try:
    # 예외가 발생할 수 있는 코드
    result = 10 / 0
except ZeroDivisionError as e:
    # 특정 예외를 처리
    print(f"0으로 나눌 수 없습니다: {e}")
except Exception as e:
    # 모든 예외를 처리
    print(f"알 수 없는 에러: {e}")
else:
    # 예외가 발생하지 않았을 때만 실행
    print("정상적으로 실행되었습니다")
finally:
    # 예외 발생 여부와 관계없이 항상 실행
    print("정리 작업을 수행합니다")

주요 예외 타입

예외 타입발생 상황예시
ValueError잘못된 값int("abc")
TypeError잘못된 타입"hello" + 5
ZeroDivisionError0으로 나누기10 / 0
FileNotFoundError파일이 없음open("없는파일.txt")
KeyError딕셔너리에 키가 없음dict["없는키"]
IndexError인덱스 범위 초과list[100]

예외 발생시키기 (raise)

def divide(a, b):
    if b == 0:
        raise ValueError("b는 0이 될 수 없습니다")
    return a / b

try:
    result = divide(10, 0)
except ValueError as e:
    print(f"에러: {e}")

사용자 정의 예외

class InsufficientBalanceError(Exception):
    """잔액 부족 예외"""
    pass

class BankAccount:
    def __init__(self, balance):
        self.balance = balance
    
    def withdraw(self, amount):
        if amount > self.balance:
            raise InsufficientBalanceError(
                f"잔액 부족: 현재 잔액 {self.balance}원, 요청 금액 {amount}원"
            )
        self.balance -= amount
        return self.balance

# 사용 예시
account = BankAccount(10000)
try:
    account.withdraw(15000)
except InsufficientBalanceError as e:
    print(e)

이렇게 오늘배운 내용을 정리해보았습니다. 물론 많은 내용을 배웠지만 배운 내용들이 많아서 빼고 작성했습니다
출처 : https://github.com/ej31

profile
나를 한줄로

0개의 댓글