개발/북TIL

[북TIL] 파이썬 알고리즘 인터뷰 1~3장

대왕판다 2022. 7. 14. 19:51

오늘 TIL 3줄 요약

  • 파이썬이 왜 코테에 유리한가(코드잼, 카카오 공채 응시 언어별 통계로 확인)
  • 파이썬과 다른 언어들의 반복문, 구조체, 클래스 구현
  • 구조체, 동적 타이핑 언어, 제네릭 프로그래밍이란?
  • 파이썬의 인덴트는 공백 4칸(PEP 8)
  • 좋은 코드는 얼핏 쳐다 보기만해도 향기가 난다.

 

 

TIL (Today I Learned) 날짜

  • 2022.07.14 THU



오늘 읽은 범위

  • 파이썬알고리즘인터뷰(상길북)1~3장



책에서 기억하고 싶은 내용을 써보세요.

  • 파이썬은 동적 타이핑 언어로 사용하기엔 매우 편하지만, 타입을 명시하지 않으면 가독성을 낮추고 버그 발생 확률이 높아진다.

    # 타입을 명시하는 예
    from typing import TypeVar
    
    # 파이썬의 typing 내장 패키지가 파이썬을 정적 타입으로 만들어주지는 않는다.
    # 그러나 코드 상에 타입을 명시할 수 있고, 에디터 레벨에서 경고를 띄워주는것이 가능.
    
    T = TypeVar('T')
    U = TypeVar('U')
    
    def are_equal(a:T, b:U) -> bool:
        return a == b
    
    are_equal(10, 10.0)
    
  • 파이썬에는 구조체가 없어 네임드튜플을 사용하거나 dataclass 데코레이션(3.7이후)을 사용해 구조체 형태로 정의할 수 있다

    # python 3.7+
    from dataclasses import dataclass
    
    @dataclass
    # 클래스를 구현할때 데이터 클래스를 선언해주면 여러 내부 함수의 기능도 자동으로 구현가능
    class Product:
        weight: int = None
        price: float = None
        # 타입 힌트와 함께 사용
            
    apple = Product()
    apple.price = 10
    
  • 가독성을 위해 람다, 리스트 컴프리헨션 등 표현식은 2개를 넘지 않아야 한다.
  • 제너레이터는 루프의 반복 동작(iteration)을 제어할 수 있는 루틴 형태.
  • 제너레이터를 쓸 때 yield 구문을 사용하면 return과 달리 실행 중이던 값을 내보내고, 함수의 끝까지 실행된다.


오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 람다표현식에 map이나 filter를 사용하는 것이 더 능숙해보이고 어려워보였는데,

  • 정작 리스트 컴프리헨션을 이용하는게 가독성이 높다는 점이 인상적이다.

     



궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 제네릭 프로그래밍(영어: generic programming)은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다.

    • 즉 클래스를 정의 할 때는 데이터 타입을 확정하지 않고 인스턴스를 생성할 때 데이터 타입을 지정하는 기능이 제네릭이다. 이를 통해 중복의 제거와 타입 안정성의 추구가 가능해진다.

    • 또한 자바와 같은 컴파일 언어의 경우 실행중 런타임 에러를 맞는것보다, 컴파일 단계에서 에러를 내는것이 안전한데, 제네릭의 사용은 이를 가능하게 해준다.