Python study (23) 썸네일형 리스트형 클래스 메타프로그래밍 클래스 메타프로그래밍클래스 메타프로그래밍은 클래스의 정의와 동작을 동적으로 변경하거나 생성하는 기술을 말한다. 이는 Python에서 메타클래스를 사용하여 구현된다. 메타클래스는 클래스의 클래스로, 클래스가 생성되는 방식을 제어할 수 있다. 이 개념을 이해하기 위해서는 메타클래스, type 함수, 그리고 new 및 init 메서드에 대한 이해가 필요하다.메타클래스메타클래스는 다른 클래스를 생성하는 클래스이다. Python에서 모든 클래스는 기본적으로 type 메타클래스를 사용한다. type 메타클래스는 클래스가 생성되는 방식을 정의한다. 메타클래스를 직접 정의하여 클래스 생성 시 커스터마이징할 수 있다.메타클래스 정의메타클래스를 정의하려면 type을 상속받아 새로운 클래스를 정의한다. 이 클래스에서 __n.. 속성 디스크립터 (Descriptor) 디스크립터(Descriptor)디스크립터(Descriptor)는 파이썬 객체 지향 프로그래밍에서 속성(attribute)을 제어하는 데 사용되는 강력한 도구이다. 디스크립터를 사용하면 클래스 속성의 접근, 설정, 삭제 동작을 커스터마이즈할 수 있다. 디스크립터는 get, set, __delete__라는 세 가지 특별한 메서드를 구현한 객체이다.디스크립터에는 세 가지 유형이 있다:데이터 디스크립터 (Data Descriptor): __get__과 set 메서드를 구현한다. 경우에 따라 delete 메서드도 구현할 수 있다.비데이터 디스크립터 (Non-Data Descriptor): get 메서드만 구현한다.디스크립터 메서드get(self, instance, owner): 속성의 값을 가져올 때 호출된다. .. property 데이터 랭글링(Data Wrangling)데이터 랭글링(Data Wrangling)이란, 원시 데이터를 분석에 적합한 형태로 변환하고 정리하는 과정을 말한다. 데이터 랭글링은 데이터 전처리(data preprocessing)의 중요한 부분으로, 데이터 분석가와 과학자들이 데이터 분석이나 모델링을 수행하기 전에 반드시 거쳐야 하는 단계이다.데이터 랭글링의 주요 단계데이터 수집:다양한 소스(파일, 데이터베이스, 웹, API 등)에서 데이터를 수집한다.데이터 구조화:비정형 데이터를 정형 데이터로 변환하여 테이블 형식으로 만든다.데이터 프레임(pandas DataFrame) 같은 구조로 데이터를 정리한다.데이터 정리 및 클렌징:누락된 값(missing values) 처리: 결측값을 제거하거나 대체한다.중복 데이.. asynico를 이용한 동시성 asyncioasyncio는 파이썬에서 비동기 I/O 작업을 작성할 수 있게 해주는 라이브러리이다. 많은 I/O 작업을 수행하는 프로그램(예: 웹 스크래핑, 네트워크 요청 또는 파일 I/O)에서 비동기 실행을 통해 성능과 응답성을 향상시킬 수 있다.asyncio의 주요 개념이벤트 루프(Event Loop):이벤트 루프는 프로그램에서 발생하는 이벤트(예: I/O 작업 완료)를 관리하고 처리하는 중심 역할을 한다.asyncio에서 이벤트 루프는 여러 비동기 작업을 순차적으로 실행하고 완료될 때까지 대기한다.코루틴(Coroutine):코루틴은 비동기 함수이다. async def로 정의된다.일반 함수와 달리, 코루틴은 await 키워드를 사용하여 다른 코루틴의 실행을 일시 중지하고 결과를 기다릴 수 있다.asy.. Future를 이용한 동시성 Future 클래스Future 클래스는 비동기 프로그래밍에서 중요한 역할을 하는 클래스이다. 주로 concurrent.futures 모듈이나 asyncio 모듈에서 사용된다. 이 클래스는 비동기 작업의 상태와 결과를 추적하는 데 사용된다.concurrent.futures.Futureconcurrent.futures.Future 클래스는 ThreadPoolExecutor나 ProcessPoolExecutor와 같은 실행자(executor)에서 비동기 작업의 결과를 나타낸다. Future는 비동기 작업의 상태를 나타내는 객체로, 작업이 완료될 때까지 기다리거나 작업의 결과 또는 예외를 얻는 기능을 제공한다. 이 객체는 비동기 작업의 실행을 추적하고, 완료 시 콜백을 실행하거나 결과를 반환할 수 있도록 한다... 코루틴 (coroutine) yieldyield 키워드는 파이썬에서 제너레이터(generator)를 생성하는 데 사용된다. 제너레이터는 이터레이터의 일종으로, 일반적인 함수와는 달리 값을 한 번에 반환하지 않고, 하나씩 반환하면서 실행 상태를 유지한다. 이를 통해 메모리 사용을 최적화하고, 큰 데이터셋을 다룰 때 효율적인 처리를 가능하게 한다.제너레이터와 yield의 개념제너레이터 함수:yield 키워드를 포함한 함수는 제너레이터 함수가 된다.제너레이터 함수는 호출될 때 함수 전체가 실행되는 것이 아니라, 이터레이터 객체를 반환한다.yield 키워드:함수가 실행을 중단하고 호출자에게 값을 반환한다.중단된 위치와 상태를 기억하고, 이후 다시 호출되면 그 위치에서 실행을 재개한다.여러 번 호출될 수 있으며, 그때마다 yield로 지정된.. 콘텍스트 관리자와 else 블록 if문 이외에서의 else 불록Python에서 else 블록은 조건문(if) 이외에도 반복문(for, while)과 예외 처리문(try)에서 사용될 수 있다. 각 경우에 대해 자세히 설명하겠다.1. 반복문에서의 else 블록반복문에서 else 블록은 반복문이 정상적으로 완료되었을 때 실행된다. 여기서 "정상적으로"라는 의미는 반복문이 break 문으로 중단되지 않고 끝까지 실행된 경우를 말한다.for 반복문에서의 elsefor i in range(5): if i == 3: breakelse: print("반복문이 중단되지 않았습니다.")# 결과: (출력 없음, 3에서 break로 종료)for i in range(5): print(i)else: print("반복문이 중단되.. 제너레이터 (Generator) WordIterator단어별로 반복하는 클래스는 주어진 텍스트에서 단어를 추출하고, 이를 반복 가능한 형태로 제공하는 기능을 하는 클레스를 만들기 위해 re.findall 함수를 사용해 텍스트에서 단어를 추출하고, 이를 반복 가능한 객체로 반환하는 클래스를 만들어 보겠다.import reclass WordIterator: def __init__(self, text): self.words = re.findall(r'\\b\\w+\\b', text) def __getitem__(self, index): return self.words[index] def __len__(self): return len(self.words) def __repr__(sel.. 이전 1 2 3 다음