Python asyncio에 대한 탐구
·
탐구 생활/python
Python Web 개발을 FastAPI로 시작하다보니 비동기 상태에서 Python을 다루는게 너무나 당연했습니다. 그동안 막연히 Python을 비동기적으로 쓰려면 asnyc 를 써야지 생각만해왔습니다. 주말을 맞이해서 이번에 그 기반을 닦아보려고 합니다. 오늘은 그래서 asyncio 는 무엇인지 그리고 왜 필요한지, node.js 그리고 Java 와의 차이점은 무엇인지 등을 알아보고 정리하려 합니다.asyncio란 무엇인가?공식 문서에서는 asyncio를 “async/await 문법을 이용하는 동시성(concurrent)처리를 위한 라이브러리" 라고 소개하고 있습니다. 이러한 asyncio 라이브러리를 이용하여 IO bound 되어있는 작업을 효율적으로 처리할 수 있고, 이러한 이유로 고성능 웹 프라임..
Python의 Type System
·
탐구 생활/python
gRPC에 대해서 알아보던중 pyi 파일을 처음 보았고, 이 파일이 Python Type System 중 하나인 stub file 이라는 것을 알게되었습니다. stub file 이 무엇인지 궁금해졌고, 이 궁금증은 Python의  Type System 전체로 확장되었습니다. 전반적인 내용을 정리해보고자 합니다. Python 공식문서중 TypeHint Guide에서 많은 내용을 참고했습니다. 왜 Type System이 필요한가?우선 프로그래밍 언어를 구분할때 다음과 같은 기준이 있습니다.타입 캐스팅이 자유로운지에 따라 강 타입/약 타입컴파일시 타입을 체크하는지에 따라 정적 타입/동적 타입이러한 기준에서 봤을때 Python은 약 타입이자, 동적 타이핑 언어입니다. 즉 명시적인 타입 캐스팅 없이 타입 변환이 ..
python 사용자 지정 불변 객체를 만드는 3가지 방법
·
탐구 생활/python
사용자 지정 불변 객체이전 글에서는 사용자가 만든 클래스는 모두 가변 객체인것 처럼 설명되었다. 정말 사용자가 만든 클래스는 불변 객체가 될 수 없는 걸까?용자가 작성한 클래스를 불변 객체로 만들기 위해서는 다음의 조건이 충족되어야 할 것이다.새로운 attribute 를 추가하는것을 막는다.기존 attribute 를 변경하는 것 모두가 막는다.값을 기반으로 객체간 동등성을 비교하도록 재정의 한다.1. 새로운 attribute 추가 제한파이썬 객체는 별다른 설정을 하지 않는다면 attribute 를 dict 자료형에 저장한다. 그리고 dict 자료형은 값을 추가, 삭제할 수 있다. 아래의 예시를 보자. 자유로은 attribute 추가class MutableClass: value: str def ..
Python 가변 객체와 불변 객체
·
탐구 생활/python
Python의 가변 객체와 불변 객체Python에서 객체는 가변 객체(Mutable Objects)와 불변 객체(Immutable Objects)로 나눌 수 있다. 이 두 가지는 객체의 값을 변경할 수 있는지 여부에 따라 구분되며, 메모리 관리와 성능에 중요한 영향을 미친다. 1. 가변 객체 (Mutable Objects)특징값(내용)을 변경할 수 있음.동일한 객체를 참조하는 변수는 변경 사항을 공유.대표적인 가변 객체:list 리스트dict 딕셔너리set 세트사용자 정의 클래스 객체예제x = [1, 2, 3] # 리스트 객체 생성y = x # x와 y는 같은 객체를 참조x.append(4) # x의 값을 변경print(x) # 출력: [1, 2, 3, 4]print(y) ..