[Python] with, match, else 블록
콘텍스트 관리자와 with 블록with 블록with문은 예외가 발생하더라도 자원을 안전하게 해제할 수 있도록 도와준다.with open("file.txt", "r") as f: data = f.read()with블록을 빠져나가면, f.close()가 자동으로 호출됨콘텍스트 관리자 (Context Manager)콘텍스트 관리자 객체는 with문을 제어하기 위해 존재하고, 다음 두 메서드를 가짐__enter__(self): with블록 시작 시 호출, as 키워드로 받은 변수에 반환값 저장__exit__(self, exc_type, exc_value, traceback): with블록 탈출 시 호출, 예외 발생 여부와 관계없이 무조건 실행exc_type: ZeroDivisionError 등의 예외 클래..
2025. 5. 4.
[Python] 반복자, 제너레이터, 고전적인 코루틴
반복형(Iterable)과 반복자(Iterator)반복형(Iterable)정의: for 루프에서 사용할 수 있는 객체 (재사용 가능)조건: iter() 메서드를 가지고 있고(__getitem__()이어도 됨), 이 메서드가 반복자(iterator)를 반환해야 함예시: list, tuple, str, dict, set, range 등x = [1, 2, 3]iter_obj = x.__iter__() # or iter(x)반복자 (Iterator)정의: __next__() 메서드로 값을 하나씩 꺼낼 수 있는 객체조건: __iter__()와 __next__()를 모두 가지고 있어야 함동작: next() 함수로 값을 하나씩 꺼내며, 끝에 도달하면 StopIteration 예외 발생 (재사용 불가)x = iter..
2025. 5. 3.
[Python] 연산자 오버로딩
연산자 오버로딩 기본 지식연산자 오버로딩은 사용자 정의 객체가 중위 연산자(ex. +, |)나 단항 연산자(ex. -, ~)를 사용할 수 있게 해줌하지만 남용되기 쉬어 파이썬에서는 아래 제한을 두어 융통성, 사용성, 안전성을 유지함 내장형의 연산자는 오버로드 할 수 없다새로운 연산자를 만들 수 없으며, 기존 연산자를 오버로드할 수만 있다.is, and, or, not 연산자는 오버로드할 수 없다. (그러나 &, |, ~ 비트 연산자는 오버로드할 수 있다.)단항 연산자__neg__()가 구현하는 -__pos__()가 구현하는 +__invert__()가 구현하는 ~+ 연산자 오버로딩 __add__(self, other)벡터 덧셈을 정의 class Vector: def __init__(self, x,..
2025. 4. 19.