본문 바로가기

분류 전체보기

(249)
입사 후, 첫 번째 프로젝트 후기 시간 빠르다... 벌써 입사한 지 3개월이 지났다. 그간 작업했던 프로젝트가 드디어 배포되기 시작했다. 그리고 3개월 수습 발표도 이번 주에 성공리에 잘 마쳤다. 쏘카에서 첫 프로젝트를 진행하며 느끼고 생각했던 것들을 하나씩 정리해 남겨둔다. 0. 첫 번째로 참여하게 된 프로젝트 내가 속한 데이터 엔지니어링팀은 이런저런 다양한 일들을 한다. 나는 팀장님과 함께 신규 가격 시스템 관련 파이썬 개발을 맡게 되었다. 내가 한 업무를 한 마디로 요약하면... 쏘카 차량의 대여 가격을 계산하는 모듈을 만드는 일이었다. 기존 레거시 가격 시스템과 결과는 비슷하되, 노후화된 레거시 로직 전체를 새로 구성하는 것이었다. 프로덕션으로 배포되는 코드를 새롭게 짜 본다니... 너무 설레잖아?? 결과적으로 약 세 달 좀 안되..
슬기로운 파이썬 트릭 5, 6 - 반복과 이터레이션 & 딕셔너리 트릭 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 6, 7장에서 정리할 내용이 적어 한 글에 압축하여 포스팅한다. 6장. 반복과 이터레이션 6장 앞 부분은 다음 파트들로 이루어져 있다. 6.1. 파이썬다운 반복문 작성하기 6.2. 리스트 컴프리핸션 이해하기 6.3. 리스트 분할 트릭과 스시 연산자 6.4. 아름다운 이터레이터 6.5. 제너레이터는 단순화된 이터레이터다. 6.6. 제너레이터 표현식 이 파트들은 너무 간단한 파이썬 내용이거나, 이전에 공부하며 기록했던 내용이라 그냥 과감히 넘어간다. 이터레이터, 제너레이터 관련해 이전에 공부한 기록은 파이썬 클린 코드 1 - 파이썬스러운 코딩을 파이썬 문법 컨셉에 가면 볼 수 있다. 6.7. 이터레이터 체인 이터레이터 체인이란 아래 예와 같..
슬기로운 파이썬 트릭 4 - 파이썬의 일반 데이터 구조 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 5.1. 딕셔너리, 맵, 해시테이블 dict : 믿음직한 딕셔너리 phonebook = { "bob": 1234, "alice": 3719 } 딕셔너리의 키는 불변타입(immutable) 만 가능하다. 조회, 삽입, 갱신 및 삭제의 시간복잡도는 O(1) 이다. 사용하지않을 이유가 거의 없다. collections.OrderedDict : 키 삽입 순서 기억 >>> import collections >>> d = collections.OrderedDict(one=1, two=2, three=3) >>> d OrderedDict([('one', 1), ('two', 2), ('three', 3)]) 해시의 특성상 데이터의 순서 개념이 없는데..
좋아하는 것의 기준 몇 년 전에 봤던 건데, 간만에 다시보네. https://www.youtube.com/watch?v=OL2iHMBRd7g
슬기로운 파이썬 트릭 3 - 클래스와 객체 지향 프로그래밍 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 전반적으로 대부분 아는 내용이지만 remind up 한다는 느낌으로 정리해본다. 4.1. 객체 비교: is vs == 예제 a = [1, 2, 3] b = a c = [1, 2, 3] >>> a == b True >>> a is b True >>> a == c True >>> a is c False 요점 정리 두 변수가 동일한(identical) 객체를 가리키는 경우, is 표현식은 True 로 평가된다. 두 변수가 동등한(equal: 내용이 같은) 객체를 가리키는 경우,== 표현식은 True 로 평가된다. 4.2. 문자열 변환(모든 클래스는 __repr__ 이 필요하다) 예제 class Car: def __init__(self, col..
슬기로운 파이썬 트릭 2 - 효과적인 함수 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 3.1. 파이썬 함수는 일급 객체다 함수는 객체다 파이썬의 함수는 일급 "객체"다. 즉, 함수를 변수에 할당하고 데이터 구조에 저장하고, 인자로 다른 함수에 전달하고, 반환할 수 있다. 함수 객체와 이름은 별개다. def yell(text): return text.upper() + "!" >>> bark = yell >>> bark("heumsi") "HEUMSI!" >>> bark.__name__ "yell" 함수는 데이터 구조에 저장할 수 있다. >>> funcs = [bark, str.lower, str.capitalize] >>> funcs[0]("heumsi") "HEUMSI!" 함수는 다른 함수로 전달할 수 있다. def gr..
슬기로운 파이썬 트릭 1 - 파이썬 코드를 정돈하기 위한 패턴 이 글은 슬기로운 파이썬 트릭을 읽고 핵심만 빠르게 정리한 글이다. 더 나은 파이썬 개발자가 되기 위해, 파이썬다운 코드에 대한 내용을 다룬다. 1장은 소개 글이라, 1장은 생략하고 2장부터 시작한다. 2.1. assert 문으로 방어하기 파이썬의 단언문은 프로그램 내부 자체 검사로 조건을 테스트하는 디버깅 도구다. def apply_discount(product, discount): price = int(product['price'] * (1 - discount)) assert 0 > test = Test() >>> test.__baz AttributeError: 'Test' object has no attribute '__baz' >>> test._Test__baz 42 __var__ 파이썬에서 정의..
파이썬 클린 코드 3 - 좋은 코드의 일반적인 특징 이 장에서는 훌륭한 소프트웨어 디자인을 위한 몇 가지 원칙들을 살펴본다. 개인적으로 개발적으로 정리하고 유념해야 할게 많았던 장이라 내용이 조금 길다. 책의 내용을 따라가되, 내가 추가적으로 살을 붙인 것들도 있다. 1. 계약에 의한 디자인 컴포넌트는 기능을 숨겨 캡슐화하고 함수를 사용할 고객에게는 API를 노출한다. API를 디자인할 때는 예상되는 입력과 출력 그리고 부작용을 문서화해야 한다. 코드가 정상 동작하기 위해 기대하는 입력과 호출자가 반환받기를 기대하는 것은 디자인의 하나가 되어야 한다. 여기서 계약이라는 개념이 생긴다. 계약에 의한 디자인이란 양측이 동의하는 계약을 먼저한 다음, 계약을 어겼을 경우 명시적으로 왜 계속할 수 없는지 예외를 발생시키는 것이다. 계약은 주로 사전 조건과 사후 조..