본문 바로가기

Python/Basic

(7)
[Python] 파이썬 비동기 프로그래밍 asyncio Intro비동기 프로그래밍이란 무엇일까요? 작업이 완료될 때까지 기다리지 않고 잠재적으로 오래 실행되는 작업을 시작하여 해당 작업이 실행되는 동안에도 다른 이벤트에 응답할 수 있게 하는 기술입니다. 이러한 비동기 프로그래밍이 필요한 이유는  Server Request, Disk Read/Write 등 CPU작업 없이 결과를 기다리기 심심할 때(?) 그 사이에 CPU작업을 할 수 있도록 설계하기 위함입니다. 만약 Server와 통신하는 프로그램이 항상 동기적으로 작성하게 된다면 Server Request를 요청한 다음에 Response가 올때까지 아무 작업도 하지 못한 채 기다려야만 합니다. CPU는 놀고있는데 말이죠. 이렇게 외부 요청, Disk작업이 진행될 때에도 CPU가 멈추지 않고 계속 진행하도록 ..
Python - List Comprehension *바쁘신 분들을 위한 3줄 요약 1. List생성 code를 한 줄로 표현 가능한 문법입니다. 2. 어려워 보이지만 사실상 python의 문법을 거의 유지하고 있습니다. 3. 속도측면에서 유리할 때도 있지만 주의해서 사용해야 합니다. Introduce(소개) List Comprehension를 한국어로 직역하면 "목록 표현식"이라 할 수 있습니다. python에서는 List 객체를 한 줄로 표현할 수 있는 고유한 문법을 뜻합니다. 이 문법을 사용하면 List를 작성할 때 보다 간결하게 작성이 가능합니다. 예를 들어, 0~9까지의 수 중, 3의 배수가 아닌 것만 list에 담고 싶을 때, 기존 방식으로는 이렇게 작성합니다. a = [] for i in range(10): if i % 3 != 0: a.ap..
Python - Int의 크기가 28bytes인 이유 *바쁘신 분들을 위한 3줄 요약 1. 28 bytes = refcnt (8 bytes) + Type pointer (8 bytes) + PySize (8 bytes) + digits (4 bytes) 2. refcnt는 GC를 위한 참조수, Type pointer는 Type을 표현하기 위한 포인터입니다. 3. Pysize, digits의 Array 구조 덕분에 큰 수에 대한 Overflow 걱정이 없습니다. *목차 - Python의 int는 쓸데없이 많은 메모리를 차지한다? - CPython의 코드를 살펴보자 - PyLongObject 분석 - Python의 int는 Overflow 되지 않는다 - Python에서 표현 가능한 가장 큰 숫자는? Python의 Int는 쓸데없이 많은 메모리를 차지한다? 혹..
Python - Mutable vs Immutable * 바쁘신 분들을 위한 3줄 요약 1. mutable이란, "메모리 주소를 유지한 채 값을 변경할 수 있다"란 뜻이다. 2. list, dict 등은 변경 가능(mutable)하며 3. int, float, string, tuple 등은 변경 불가능(immutable)하다. Mutable, Immutable은 무슨 뜻일까? mutable은 변경가능이란 뜻이며 immutable은 변경 불가능이란 뜻입니다. python에서 변경 가능(mutable)한 Data Type으로는 list, dict 등이 있으며, 변경 불가능(immutable)한 Data Type으로는 int, float, string, tuple 등이 있습니다. 하지만 이 정도의 설명으로는 오해를 하기 쉽습니다. int는 정말로 변경이 불가능한..
Python - 기본 문법정리 * 목차 1. 주석 2. 변수 3. 연산자 4. 변수 선언 5. 조건문 6. 반복문 7. 함수 8. 클래스 주석(Comments) python에서 지원하는 주석인 #과, 주석처럼 사용하는 Triple quotes가 있습니다. Triple quotes는 실제로는 string 객체지만, 주석으로 사용을 많이 합니다. Comment : #을 사용하며, 글자 뒤에 한 줄만 적용 됩니다. print해도 출력할 수 없습니다. # 주석1 입니다. # 주석2 입니다. Triple quotes : 큰 따옴표, 작은 따옴표를 사용하여 여러 줄에 적용합니다. print로 출력할 수 있습니다. """ document explain1 document explain2 """ ''' document explain1 document..
Python - List는 어떻게 데이터를 관리하는가? *바쁘신 분들을 위한 3줄 요약 1. List는 데이터가 저장된 주소들의 나열이다. (C언어 Level에서 이중포인터) 2. 데이터 주소만 List에 저장하기 때문에, 데이터 Type이 어떤 것이던지 List로 다룰 수 있음. 3. List는 데이터를 직접 다루는 게 아니기 때문에, Array에 비해 데이터를 다루는데 시간이 오래 걸린다. List는 어떠한 Data Type도 원소로 다룰 수 있다. Python에서 List를 다루다 보면, 다양한 Type에 대해서도 잘 동작하는 것을 경험합니다. >>> import numpy as np >>> a = [1,2.2,(3,4), "5", np.array([6,7]), {"key8": 9}, 10] >>> print(a) ## list에 int, float, ..
Python - is와 ==의 차이 * 바쁘신 분들을 위한 3줄 요약 1. is는 변수가 저장된 장소가 같은 지 확인합니다. 2. ==는 변수의 값이 같은 지 확인합니다. 3. 숫자, 글자 같은 고정값(Literal)에 is 연산자를 사용하면 SyntaxWarning을 일으킵니다. * 이 글에서 작성된 메모리 주소는 모두 가상입니다. 참고 바랍니다. 파이썬(python)에서는 "==" 연산자를 활용하여 같은 값인지 확인합니다. >>> a = 0 >>> b = 0 >>> a == b True 그런데 파이썬에는 is을 사용하는 경우도 있습니다. >>> a = 0 >>> b = 0 >>> a is b True is와 == 는 동일한 연산자일까요? ==와 is는 무엇이 다른 걸까요? is 연산자는 변수의 저장 위치가 같은지를 확인하는 연산자입니다..