14-1. 들어가며


  • 학습 목표
    • 람다 표현식을 읽고 코드의 출력 결과 예상하기
    • 람다 함수를 직접 만들기
    • 함수가 일급 객체라는 것이 무슨 의미인지 설명하기


14-2. 람다


람다 표현식과 def로 만든 함수 비교

매개변수와 인수

  • 매개변수 : 함수에 입력된 값 받는 변수
  • 인수 : 함수 호출 시 전달하는 입력값
  • 람다 표현식(Lambda Expression)
    • 람다를 포함한 식, 람다 표현식으로 쓴 함수는 람다 함수
    • 사용 형태 : (lambda 매개변수 : 리턴값)(인수)

  • def로 만든 함수 vs 람다 함수

    차이점def람다 함수
    코드 줄 수여러 줄1줄
    함수 이름OX
    매개변수함수명 뒤 () 안에 쓰임lambda 바로 옆에 쓰고 : 작성
    return 값줄바꿈 후 return 명령어로 작성lambda 변수:이후에 리턴 값 바로 작성

  • 람다 함수와 변수
    • 람다 함수는 익명의 함수 -> 함수 생성 이후 호출 시 람다 표현식을 변수에 할당해야 함!(괄호는 생략)

주의 : 람다 표현식 안에서는 새 변수를 만들 수 없다!

  • return 값 부분 : 변수 없이 식 한 줄로 표현해야 함.
  • 단, 함수 바깥에 있는 변수 참조는 가능

람다 표현식을 인수로 사용하는 함수 3가지

  • map()
  • filter()
  • reduce()

1️⃣ map()

  • 사용 형태
map(적용시킬 함수, 적용할 값들)

# 표현 방식
map(함수, 리스트 or 튜플)
  • map + 일반 함수

    • map()list() or tuple() 함수로 묶어서 사용
      ex) list(map(second, two))
  • map + 람다 함수

    • list(map(lambda x : x * 2, two))

2️⃣ filter()

  • 사용 형태
filter(함수, 리스트)
  • filter() + 일반 함수

    • list(filter(odd, two))
  • filter() + 람다 함수

    • list(filter(lambda x : x % 2 == 1, two))

      코드를 더 줄이고 싶다면?

      • 0은 Fale이고, 0을 제외하면 True인 파이썬의 자료형 참 거짓 활용
        list(filter(lambda x : x % 2, two))

3️⃣ reduce()

  • 파이썬 3부터 내장 함수가 아니어서 functools 모듈에서 reduce()를 import 해야함.
  • 사용 형태
from functools import reduce
reduce(함수, 이터러블 객체)
  • reduce() + 일반 함수

    • reduce(f, a)
  • reduce() + 람다 함수

    • reduce(lambda x, y : x * y, a)
  • 리스트는 a = [1, 2, 3, 4, 5]


14-3. 일급 객체


객체(Object)s란?

  • 객체(Object)는 속성(값)과 행동(함수)을 가지고 있는 대상

  • 객체 지향 프로그래밍 vs 절차 지향 프로그래밍

    • 객체 지향 프로그래밍: 프로그램 구성 요소를 객체로 표현 + 객체 간 상호작용
    • 절차 지향 프로그래밍: 프로시저(procedure) 기반

일급 객체란?

3가지 조건 모두 만족해야 일급 객체!

  1. 변수에 할당하거나 데이터 구조(자료구조) 안에 그 객체를 담을 수 있다.
  2. 매개변수로 전달할 수 있다.
  3. 리턴값으로 사용될 수 있다.
  • 예시 : int 타입

파이썬에서는 "함수"도 일급 객체

  • 예시로 확인해보기!

    • 1번 : 변수에 할당하거나 데이터 구조 안에 함수를 담을 수 있다.

      • 함수 이름을 다른 변수에 할당할 수 있고, 각 함수 비교 가능!
      • 변수에 함수 할당
      • 리스트에 함수 할당
    • 2번 : 매개변수로 함수를 전달할 수 있다.

      • 우리가 배웠던 map()', 'filter()', 'reduce()를 통해 파이썬에서 함수가 매개변수로 전달 가능하다는 것을 배운 것!
  • 3번 : 함수를 리턴값으로 사용할 수 있다.

    • 중첩 함수
      def 함수1():
          def 함수2():
              내용
          return 함수2

      호출 순서 정리

      • func() 함수 호출 -> func = hello("AIFFEL") -> 따라서 hello("AIFFEL") 출력
      • printer() 함수 -> hello(name)의 name에 들어온 인자 값 "AIFFEL"을 입력받음 -> "Hello AIFFEL!" 출력
profile
언젠가 내 코드로 세상에 기여할 수 있도록, Data Science&BE 개발 기록 노트☘️

0개의 댓글

관련 채용 정보