목록전체 글 (11)
파이썬쟁이
Python의 고질병인 Global Interpreter Lock의 해결을 위해 Asyncio가 나오고, Python 자체에서도 async + await 함수 프로그래밍을 지원하는 지경까지 이르렀습니다. 글 제목은 Generator에 관하여라는 제목이지만, 왜 비동기를 언급하는가? 비동기의 역사에 제너레이터가 함께하기 때문입니다. 오늘은 비동기를 직접적으로 다루진 않을 예정입니다. def create_gen(num): a, b = 0, 1 while num: yield a a, b = b, b+1 num -= 1 def create_list(num): return [i for i in range(num)] 임의의 두 함수를 지정했습니다. create_list 라는 함수는 굳이 함수로 만들지 않아도 만들 ..

Python의 라이브러리, 패키지를 사용하기 위해선 import라는 중요한 과정이 있습니다. 각자만의 스타일이 있겠지만, 대부분 코드의 최상단에 지정하고 사용 중에 있을 것이라고 생각됩니다. 저에게 있어서 Python이란 가장 사랑하는 언어이지만, 다른 언어의 웹 프레임워크에 비해 속도나 안정성이라는 넘어야 할 큰 과제가 있는 매력적인 언어라고 생각이 됩니다. 오늘은 우리가 무심코 지나칠 수 있는 import에 관련한 재밌는 실험 한 가지를 해볼 것입니다. import math def test1(x): i = 1 for _ in range(1000): i += math.sin(x) return i 우리는 기본적으로 Python의 어떤 라이브러리를 사용하려고 할 때, 위 코드블럭과 같이 사용할 것입니다. ..

우리가 코딩테스트나, 로직을 설계할 때 특정 값을 저장하는 목적으로 리스트 자료형을 많이 사용하고 있을겁니다. 이는 동적데이터 (값을 갱신해야 하는) 일 경우에는 아주 좋은 방법입니다. 하지만 우리가 도출해야 할 결과의 길이를 알고 있거나 정적데이터일 경우에는 어떨까요? 오늘은 이 리스트 자료형에 대해 알아보도록 하겠습니다. def solution(n): answer = [] for i in range(0, n): answer.append(i) return 위와 같이 사용하고 있을텐데, 그렇게 된다면 메모리적으로 엄청난 비용 손실이 생기게 됩니다. 이 말을 이해하기 위해선 리스트 자료형의 특징을 먼저 살펴봐야 합니다. 리스트 자료형에서 append 메소드는 우리가 효율에 대해 아무것도 알지 못하던 시절엔..