Python의 함수는 으로서 관리됩니다. 쉽게 말하면, 변수에 할당할 수 있다는 것입니다

이를 프로그래밍 언어 디자인 측에선 일급 객체라고 부릅니다. 이는 다른 객체들에 적용 가능한 일반적인 연산을 모두 지원하는 객체를 가리킵니다. 함수에 매개변수로 넘기기, 변수에 대입하기와 같은 연산들이 여기서 말하는 일반적인 연산의 예입니다. 다음과 같은 조건을 만족할 때 일급 객체라고 말할 수 있습니다.

  • 변수나 데이터 구조안에 담을 수 있다.
  • 파라미터로 전달 할 수 있다.
  • 반환값(return value)으로 사용할 수 있다.
  • 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
  • 동적으로 프로퍼티 할당이 가능하다.

Python의 함수는 해당 조건을 모두 만족하며, 따라서 일급 객체입니다.

lambda

그러나 Python의 함수는 JavaScript의 함수처럼 런타임 생성과 익명 생성이 불가능하므로 일급 함수라고 분류할 수는 없습니다. 런타임 생성은 그때 그때 함수를 만든다는 의미인데, Python은 이 일이 불가능합니다. return def ...와 같은 표현을 할 수 없다는 것입니다. 이를 위해 Python에서는 lambda를 지원합니다.

lambda는 함수를 생성할 때 사용하는 예약어로, def와 동일한 역할을 합니다. 이는 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳(런타임 또는 익명으로 생성해야 하는 경우)에 주로 쓰입니다.

'Python 계열 > Python 레거시 글' 카테고리의 다른 글

[Python] 객체지향  (0) 2018.06.29
[Python] 빌트인 함수  (0) 2018.06.28
[Python] docstring  (0) 2018.06.26
[Python] 함수  (0) 2018.06.25
[Python] pass statement  (0) 2018.06.24

+ Recent posts