분류 전체보기
-
[Python] 비동기 프로그래밍을 돕는 asyncio 라이브러리Programming Language/Python 2021. 5. 29. 00:31
비동기 프로그래밍을 돕는 asyncio 라이브러리 asyncio(Asynchronous I/O) 파이썬은 인터프리터 언어의 특성과 함께 속도가 느린 언어로 알려져있습니다. 그렇기에 비동기로 처리해 속도를 높이는 방법은 파이썬의 단점을 극복하는 하나의 해답이 됩니다. 다만, 파이썬에는 멀티스레드에서 발생하는 복잡한 문제들을 막기 위한 GIL(Global Interpreter Lock)이 존재하고, 이로 인해 항상 한 번에 하나의 스레드만 작업을 수행할 수 있어 진정한 의미의 멀티스레딩은 실현되기 어렵습니다. GIL은 보다 복잡한 문제를 막기 위한 심플하고 효과적인 방법이지만, 파이썬의 한계점이자 파이썬이 태생적으로는 비동기 프로그래밍에 적합하지 않은 언어임을 보여주죠. 한계가 뚜렷함에도 파일 읽기 및 쓰기..
-
[Python] 데코레이터(Decorator) - 효과적 프로그래밍을 위하여Programming Language/Python 2021. 5. 18. 02:42
파이썬 데코레이터 (Decorator) 파이썬의 함수는 일급 시민이자 일급 객체 일급 객체(First-class object)란 다음과 같은 몇 가지 조건을 갖춤으로 인해서, 해당 객체를 사용할 때 다른 요소들과 아무런 차별이 없는 객체를 의미합니다. 다음은 Robin Popplestone이 정의한 일급 객체의 일반적인 조건입니다. 모든 일급 객체는 함수의 실질적인 매개변수가 될 수 있다. 모든 일급 객체는 함수의 반환값이 될 수 있다. 모든 일급 객체는 할당의 대상이 될 수 있다. (변수 대입) 모든 일급 객체는 비교 연산(==, equal)을 적용할 수 있다. 일급 객체는 자바스크립트에서 파생된 개념이지만 지금은 대다수 프로그래밍 언어에 적용되는 개념입니다. 파이썬에서는 모든 것이 객체이자 일급객체여..
-
[Lucian Log] 학습 정리 블로그와 개발 블로그의 구분Free Contents 2021. 5. 4. 18:54
최근에 내 Github 저장소와 블로그를 누군가에게 보여줄 일이 있었다. Github는 그렇다 치지만, 블로그를 소개할 때는 순간 입을 머뭇하는 자신을 경험했다. '이게 제 기술 블로그... 보다는 학습 정리 블로그입니다!' 일단 처음 느낀 것은 '기술 블로그'는 내 블로그에 쓸 용어가 아니란 점이다. ㅋㅋㅋ 명확한 구분은 없겠지만, 기술 블로그보다는 개발 블로그라고 하는게 마음이 확실히 편하다. 그리고 두 번째로 '내가 개발 블로그보다는 1차적인 학습 정리 블로그를 쓰고 있었구나'를 이때 조금 체감했다. 마음 깊은 곳에서 어렴풋이 느꼈던 부분이지만, 어쩌겠는가! 이상적인 개발자를 목표로 개발 블로그를 운영하고 싶은 마음에 비해, 그동안 쓸 수 있는 글은 학습 정리 뿐이었는데. 특히, 나를 증명할 방법이..
-
[프로그래머스 42626번] 더 맵게Coding Test/프로그래머스 2021. 4. 22. 21:05
# 문제 내 풀이 import heapq def solution(scoville, K): answer = 0 # 최소 힙 생성하기 h = [] for i in scoville: heapq.heappush(h, i) while True: low1 = heapq.heappop(h) # 첫 번째 원소가 K보다 크거나 같다면, 루프를 탈출하고 최소 횟수 리턴 if low1 >= K: break # 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우, -1 리턴 if not h: return -1 low2 = heapq.heappop(h) # 가장 덜 매운 두 요소의 스코빌 지수가 0이라면, -1 리턴 if low1 == 0 and low2 == 0: return -1 mixed_s = low1 + 2 *..
-
[Python] Call by assignmentProgramming Language/Python 2021. 4. 16. 17:15
파이썬과 다른 언어의 차이점은 함수 인자 전달 방식에서도 나타납니다. 파이썬의 인자 전달 방식은 Call by assignment라고 하는데, 먼저 기존의 Call by value와 Call by reference를 간단히 짚고 Call by assignment를 살펴보겠습니다. Call by value VS Call by reference 1. Call by value 함수 호출 시 전달되는 인자의 값을 복사해서 함수의 매개변수에 담아 함수 내부에서 사용하는 방식을 말합니다. 따라서, 함수 내부에서 인자로 들어온 값을 변경해도 값을 전달한 외부 변수의 값은 변경되지 않습니다. 2. Call by reference 함수 호출 시 전달되는 인자의 레퍼런스(=메모리 주소)를 매개변수에 담아 함수 내부에서 사..
-
[Lucian Log] 프로그래머스 월간 코드 챌린지 시즌 2Free Contents 2021. 4. 16. 11:40
종종 프로그래머스 문제를 풀다가 월간 코드 챌린지 시즌 1에 출제된 문제를 마주치곤 했다. 그 때는 어떤 대회인지 살짝 궁금하면서도 슥 지나쳤는데, 이번에 월간 코드 챌린지 시즌 2를 진행한다고 하여 흥미 반, 코딩테스트 감 유지 반으로 참여해 봤다. 이번 월간 코드 챌린지 시즌 2는 4월, 5월 두 번에 걸쳐 진행한다고 하며, 코딩을 좋아하는 20세 이상이면 누구나 참여가 가능하니 가벼운 마음으로 즐길 수 있는 좋은 대회라고 생각한다. 마지막 문제 풀이 끝나고 대쉬보드를 찍었는데, 그리 유의미한 등수는 아니었다 :) 중간에 개인적인 스케줄도 있었던 터라 온전히 집중하지 못하긴 했다. 첫 번째, 두 번째 문제는 금방 풀었는데, 세 번째 문제를 너무 복잡하게 접근했는지 원하는 대로 알고리즘이 동작하지 않아..
-
[Python] 놓치기 쉬운 개념들 정리Programming Language/Python 2021. 4. 15. 15:29
# 2진수, 8진수, 16진수로 정수 표현하기 >>> 0b110 # 2진수 6 >>> 0o10 # 8진수 8 >>> 0xF # 16진수 15 # 보다 정교한 계산으로 부동소수점 오류를 피하는 자료형 Decimal from decimal import Decimal cost_of_gum = Deciaml('0.10') cost_of_gumdrop = Decimal('0.35') cost_of_transaction = cost_of_gum + cost_of_gumdrop print(cost_of_transaction) # Returns 0.45 instead of 0.44999999999999996 # 빈 변수 만들기 >>> x = None # 다른 언어의 null 값 >>> print(x) None # de..