들어가기 전 자바에서 Enum을 이용해서 효율적인 코딩을 할 수 있는 것처럼 파이썬에서도 Enum 클래스가 지원되기 시작했다. 사용법이 자바와는 조금 다른데, Enum 클래스를 사용하는 방법의 기초를 터득해보고자 한다. 요약하면 다음과 같다. Enum을 이용해서 타입을 표현할 수 있음. Enum을 이용해 인스턴스들을 표현할 수 있으며, 람다 함수와 함께 이용하면 응집력 있게 다형성을 구현할 수 있음. Enum을 이용해 타입을 표현할 수 있기 때문에 typing 라이브러리와 함께 사용했을 때, 파이썬을 좀 더 단단하게 만들 수 있음. (타입 힌트를 줄 수 있기 때문임) https://github.com/chickenchickenlove/solid-python/tree/main/chapter8 Enum을 사..
들어가기 전 이 글은 파이썬 비동기 라이브러리 Asyncio를 공부하며 작성한 글입니다. 3.10 asyncio의 시작 asyncio의 시작은 간단하게 할 수 있다. 일반적인 방법은 다음과 같다 async def로 main() 함수를 선언한다. asyncio.run()으로 main() 함수를 실행한다. 앞서 공부했던 내용에서 asyncio.run()이 어떻게 동작하는지를 자세히 살펴봤었다. asyncio.run()은 다음 작업을 개발자 대신에 해준다. 이벤트 루프를 하나 만들고, 전달받은 코루틴의 실행을 예약한다. run_until_complete()를 이용해서 예약한 코루틴이 끝날 때 까지 기다린다. 코루틴의 실행이 끝나면, 아직 보류 중인 모든 Task 객체를 수집한다. 보류중인 모든 Task에 ta..
들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio를 공부하며 작성한 글입니다. 3.7.0 이터레이터 비동기 이터레이터를 시작하기 전에 이터레이터가 무엇인지를 간략히 살펴보고자 한다. 파이썬에서는 다음이 구현된 녀석을 이터레이터라고 한다. __iter__() 매직 메서드가 구현됨. __next__() 매직 메서드가 구현됨 위 두 개의 메서드가 구현되었다면, 그 클래스는 이터레이터가 된다. 그리고 이터레이터는 for 문 같은 곳에서 자유롭게 iterate 할 수 있게 된다. 아래 코드로 예를 들 수 있다. class A: def __init__(self): self.x = -1 def __iter__(self): self.x = 0 return self def __next__(self): if s..
들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio 책을 공부하며 작성한 글입니다. 3.6 비동기 컨텍스트 관리자들 : async with 네트워크 연결 같은 네트워크 자원의 생명주기를 적절한 범위 내에서 관리 할 때는 AsyncContextManager를 사용하면 편리하다고 한다. 비동기 컨텍스트 매니저는 특정한 자원의 생명주기를 관리해주는 녀석으로 보면 된다. 기본적인 개념은 __acenter()__, __aexit()__ 메서드가 구현된 클래스이며 with절이 시작할 때 __acenter()__가 호출, with절이 끝날 때 __aexit()__가 호출된다. 3.6.1 Class를 이용한 비동기 컨텍스트 매니저 먼저 AsyncContextManager의 내부 동작은 메서드를 호출하면서 이루..
들어가기 전 이 글은 파이썬 비동기 라이브러리 asyncio 3장을 공부하며 작성한 글입니다. 3.1 퀵 스타트 파이썬 asyncio의 주요 컨트리뷰터 중 하나인 유리 셀리바노프는 다음 이야기를 남겼다. Asyncio는 일곱 가지 기능만 알면 충분하다. (일반적 용도로 가정할 때) asyncio는 많은 기능을 제공하지만 이 기능은 두 가지 사람을 대상으로 각각 만들어졌다고 볼 수 있다. 하나는 asyncio 프레임워크를 개발하는 개발자 관점, 또 다른 하나는 asyncio를 사용하는 개발자 관점이다. 일반적인 용도는 asyncio를 사용하는 최종 사용자 관점을 의미한다. 따라서 7가지 기능 정도만 정확하게 알면 asyncio를 사용할 수 있다. Asyncio를 사용한 Hello World import a..