2025/05 3

Python 다중 할당(Multiple Assignment)을 이용한 변수 스왑

Python 중고뉴비로서 배우는게 참 많다.배열의 두 요소를 서로 맞바꾼다고하면 전통적으로(?) 이렇게 작성한다.tmp = heap[curr]heap[curr] = heap[child]heap[child] = tmp하지만 Python에서는 다중 할당(multiple assignment)과 튜플 언패킹(tuple unpacking)을 이용해 단 한 줄로 스왑(swap)을 해결할 수 있다.heap[curr], heap[child] = heap[child], heap[curr] 어떻게 동작할까?등호 우측의 heap[child], heap[curr]는 튜플(heap[child], heap[curr])로 묶이게 된다.등호 왼쪽의 heap[curr], heap[child]에는 튜플의 값이 순서대로 할당된다.

코루틴과 비동기 프로그래밍의 관계

재미없는 대학 숙제같은 제목이지만, 최근에 책을 하나 읽으면서 Kotlin의 코루틴(Coroutine)을 사용하면서 풀리지 않던 찝찝함을 풀어서 코루틴과 비동기 프로그래밍의 관계에 대해 포스팅 해보려한다. 이 글은 코루틴, 루틴, 서브루틴, 비동기 프로그래밍, 스레드같은 관련 단어가 각각 따로 뭔지는 알겠는데 이것들의 관계에 대해 명확히 설명하지 못하는 사람이라면 도움이 될 것이다.어떤 개념에 대해 이해하기 위해서는 그 개념이 왜 등장했는지, 이것이 해결하고자하는 문제점은 무엇인지에 대해 생각해보는게 좋은 접근이라는 것을 꽤 오래 잊고있었다. 그냥 "코루틴"이라고 구글에 검색해서 아티클을 몇가지 보면서 이해했다고 넘겼다. 하지만 정작 "코루틴"이 무엇인가? 그리고 비동기 프로그래밍과는 어떤 관계가 있는가..