Skip to content

Instantly share code, notes, and snippets.

@nattybear
Last active November 9, 2020 12:49
Show Gist options
  • Save nattybear/649872541a620e9779ecf25802e002df to your computer and use it in GitHub Desktop.
Save nattybear/649872541a620e9779ecf25802e002df to your computer and use it in GitHub Desktop.
파이썬 람다 함수

람다 함수

파이썬은 람다 함수 혹은 익명 함수라고 하는 문법을 지원합니다.

아래 코드는 숫자를 넣으면 넣은 수에 1을 더한 값을 리턴하는 람다 함수입니다.

lambda n: n + 1

위 람다 함수는 아래 함수 inc완전히 기능이 같습니다.

def inc(n):
    return n + 1

한 줄 이내의 간단한 로직이라면 아래와 같이 람다 함수에 이름을 줘서 사용하는 것이 간편할 수 있습니다.

inc = lambda n: n + 1

inc(1)  # 2

map이나 filter 같이 함수를 인자로 받는 함수를 사용할 때 람다 함수가 특히 유용할 수 있습니다.

람다 함수와 기본 함수의 클래스

페이스북 그룹 파이썬 코딩 관리자 Yong Joon Moon 님께서 아래와 같은 요청을 해주셨습니다.

함수와 람다 함수 클래스가 다릅니다. 이 두 개의 차이점도 설명해 주세요

제가 몰랐던 내용이라 검색을 해봤습니다.

이 링크에 따르면 여러가지 차이점이 있습니다만 가장 눈에 띄었던 것은 에러 발생 시 함수 이름이 표시되지 않아 디버깅이 어려울 수 있다는 점입니다.

다른 것은 잘 모르겠습니다.

1급 객체

아래와 같은 말씀도 하셨습니다.

함수가 1급 객체인데 그 이유도 추가요

1급 객체, Higer Order Function 등 여러 용어가 있습니다만 중요한 것은 아래와 같다고 생각합니다.

함수를 값처럼 인자로 넣거나 함수를 리턴할 수 있다.

파이썬에서는 함수도 객체이기 때문에 함수를 값처럼 함수의 인자로 넣거나 함수 자체를 리턴할 수 있습니다.

따라서 map이나 filter, sorted 같은 함수에 함수를 인자로 넣을 수 있고

함수를 리턴할 수 있다는 점을 이용해서 데코레이터 같은 것을 할 수도 있습니다.

이 때 인자로 넣을 모든 함수를 기본 함수로 선언해서 사용할 수도 있지만

비교적 간단하고 호출 빈도가 적을 것 같은 함수는 굳이 기본 함수로 선언하기보다는

람다를 사용하는 것이 좋을 수도 있습니다.

다른 글

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment