반응형

제너레이터 3

[Fluent Python] 2장 - 데이터 구조체 정리

안녕하세요 Dibrary입니다. '전문가를 위한 파이썬' 2장 정리 내용 입니다. 컨테이너 시퀀스 = list, tuple, collections, deque 균일 시퀀스 = str, bytes, bytearray, memoryview, array.array 컨테이너 시퀀스는 객체의 참조를 담고 있습니다. 균일 시퀀스는 값을 직접 담고 있습니다. 값과 참조의 차이를 코드로 살펴보겠습니다. list를 예로 들면, alpha값이 변하니까 alpha를 가지고 있던 tmp의 값도 변하네요. (참조하고 있었기 때문이죠) 원래 튜플은 불변형인데, 이렇게 하면 변경이 됩니다. (즉, 이렇게 사용하면 안 됩니다.) 튜플도 컨테이너 시퀀스라서 참조를 담고 있기 때문에 변경이 되네요. 반면 str은 아래처럼 작성시 그저 ..

[파이썬 클린코드] 쉽다고 알려진 파이썬도 막 사용하면 안 된다.

파이썬을 자주 사용하기 시작하면서 막연하게 걱정이 되었던 부분이 있었다. 바로 '가독성'이다. 또한, 해당 코드가 기능은 하지만 기능을 위한 필수요소만 있는 것인지, 아니면 불필요한 과정으로 덮여있는지를 알아보고 싶었다. 제목부터 느껴지지만, '클린코드'로 작성하기 위해서 좀 더 나은 방법, 객체지향에 초점을 맞춘 방법을 소개한다. 클린코드에 대한 개념을 먼저 소개하고, 파이썬이라는 언어의 특징 (pythonic)을 살려서 코드를 작성하는 방법을 몇 가지 소개한다. 이 책에서 generator와 context manager등의 개념을 알게되었고, 기존에 구현한 코드가 너무 구현에만 빠진 나머지 기능이라는 본질 자체에서 좀 멀어져 있다는 것을 깨닫게 되었다. 물론 짤막한 코드가 무조건 좋은 것은 아니지만,..

독서/서평 2022.02.18

알고리즘을 풀 때 항상 생각해봐야 하는 것 - 복잡도

안녕하세요 Dibrary입니다. 개발자라면 항상 습관적으로 알고리즘을 풀곤 하죠. 주로 파이썬이 '생각'을 구현하는데 편해서 많이들 사용하는데 생각보다 파이썬은 느린 언어죠. 따라서 알고리즘문제를 풀 때 반드시 조심해야 하는 것 2가지가 있습니다. 1. 시간복잡도 네 시간복잡도는 말 그대로 코드로 해답을 구하는데 '시간'이 얼마나 걸리느냐 입니다. 백준 알고리즘을 예로 들어보겠습니다. 이렇게 입력값의 범위가 주어지면 숫자가 얼마나 큰지 감이 오시나요? 아주 어마어마하죠. 문제는, 이렇게 큰 범위 값이 항상 주어지는 것은 아니지만, 전부가 주어질 수도 있다는 겁니다. 그렇기에 파이썬으로 해당 문제를 풀기 전에 시간을 먼저 구해보는 습관을 들이면 좋습니다. 위 코드는 임의로 제가 10의 100제곱만큼의 범위..

반응형