Python Lecture Chap 7

기초반 7차시

TOC

1. Type Hint

  • python 3.5에서부터 지원하는 사항
  • python 실행 환경에서는 함수와 변수의 자료형에 대해 강제하지 않기 때문에 type checker, IDE, linter 등에서 사용되는 third party tool의 성격이다.
    • IDE에서 변수에 type hint를 적용하면 해당 변수에서 불러올 수 있는 내부 요소를 바로 파악할 수 있다.
  • def function_name(parameter: type) -> return_type으로 표기한다.

2. Iterator(반복자)

  • 클래스에 구현된 __iter__메서드를 호출해 반환된 객체
    • 내장 라이브러리인 itertools는 iterator에 대한 더 효율적이고 다양한 기능을 지원함

2-1. Iterable Object(반복 가능한 객체)

  • __iter____next__ 메서드를 가진 객체
    • iterator protocol을 지원한다고 말하기도 함
  • __iter__메서드를 호출해 반환된 iterator는 __next__메서드를 통해 값에 차례대로 접근할 수 있음
    • 더 이상 꺼낼 값이 없을 때 __next__메서드를 호출하면 StopIteration 예외가 발생함
    • 즉, 반복문이 Iterable Object에 접근할 때 __iter__ 메서드로 Iterator를 생성하고 __next__메서드를 이용해 순차적으로 접근함
  • __getitem__메서드를 구현하면 index로 접근할 수 있음
  • Iterator는 그 자체로 하나의 객체 형태이기 때문에 iterable object와 용어를 분리해서 사용할 필요가 있음

2-2. 반환값 무시

  • unpacking을 하는데 있어서 _를 사용하면 해당 위치의 값을 반환받는 것을 무시할 수 있음

2-3. lazy evaluation(지연 평가)

3. Generator(발생자)

  • iterator를 생성해주는 함수
    • class 단에서 구현하고자 하면 iterator를, 함수 단에서 구현하고자 하면 generator를 사용
    • 또한 generator와 달리 __next__()메서드의 반환 값이 yield의 값으로 정해져 있음
  • return 부분을 yield valueyield from iterable_object로 대체하여 구현함
    • return의 성격을 지니기 때문에 값이 반환된 이후 다시 generator를 호출하기 전까지 함수 바깥의 코드가 실행됨
  • 일반 함수, 혹은 다른 방식으로 비슷한 방식을 구현할 수 있지만 매우 큰 메모리가 필요한 작업을 lazy한 방식으로 실행할 수 있음

4. Lambda(람다식, 익명함수)

  • 이름을 붙이지 않은 객체가 마치 함수 객체처럼 행동한다고 하여 익명함수라고도 함
  • lambda paramters: expression형태로 표현
    • 익명함수이기 때문에 이 식은 객체 자체이고 반환 값을 받고자 하면 변수를 선언해야 함
      • 혹은 (lambda paramters: expression)(parameter_value)를 통해 바로 값을 받을 수도 있음
    • expression은 한 줄로만 표현이 가능해야 함

results matching ""

    No results matching ""