(Functional Programming 02) 람다
SoloLearn Python 번역
- Creating a function normally (using
def
) assigns it to a variable automatically.- 함수를 정상적으로 생성(
def
사용)하면, 변수에 자동으로 할당된다.
- 함수를 정상적으로 생성(
- This is different from the creation of other objects - such as strings and integers - which can be created on the fly, without assigning them to a variable.
- 이는 문자열 및 정수와 같은 다른 객체의 생성과 다르다.
- 변수에 할당하지 않고 즉시 생성될 수 있다.
- The same is possible with functions, provided that they are created using
lambda
syntax.- 함수가
람다(lambda)
구문을 사용해서 생성된 경우에도 마찬가지이다.
- 함수가
- Functions created this way are known as
anonymous
.- 이렇게 생성된 함수를
익명(anonymous) 함수
라고 한다.
- 이렇게 생성된 함수를
- This approach is most commonly used when passing a simple function as an argument to another function.
- 이 접근법은, 단순한 함수를 다른 함수의 인수로 전달할 때 가장 일반적으로 사용된다.
- The syntax is shown in the next example and consists of the
lambda
keyword followed by a list of arguments, a colon, and the expression to evaluate and return.- 구문은 다음 예제에서 보여준다.
lambda
키워드, 인수의 나열, 콜론, 평가 및 반환할 표현식으로 구성된다.
def my_func(f, arg):
return f(arg)
my_func(lambda x: 2*x*x, 5)
Lambda (람다):
a shorthand to create anonymous functions
익명 함수를 생성하기 위한 단축이다.
Lambda functions get their name from
lambda calculus
, which is a model of computation invented by Alonzo Church.람다 함수는, Alonzo Church가 발명한 계산 모델인
lambda 미적분학
에서 이름을 얻었다.
- Lambda functions aren’t as powerful as named functions.
- 람다 함수는 명명된 함수만큼 강력하지 않다.
- They can only do things that require a single expression - usually equivalent to a single line of code.
- 하나의 표현식이 필요한 작업만 수행할 수 있다.
- 일반적으로 하나의 코드 라인과 동일하다.
# named function
def polynomial(x):
return x**2 + 5*x + 4
print(polynomial(-4))
# 0
# lambda
print((lambda x: x**2 + 5*x + 4)(-4))
# 0
In the code above, we created an anonymous function on the fly and called it with an argument.
위의 코드에서는 익명 함수를 즉시 생성하고, 인수와 함께 호출했다.
- Lambda functions can be assigned to variables, and used like normal functions.
- 람다 함수는 변수에 할당할 수 있다.
- 그리고 일반 함수처럼 사용할 수 있다.
double = lambda x: x * 2
print(double(7))
# 14
However, there is rarely a good reason to do this - it is usually better to define a function with
def
instead.하지만 이를 수행할 이유는 거의 없다.
대신
def
를 사용해서 함수를 정의하는 것이 더 좋다.
QUIZ
- What are anonymous functions called?
- 익명 함수를 뭐라고 부르는가?
Lambdas
- Fill in the blanks to create a lambda function that returns the square of its argument, and call it for the number 8.
- 인수의 제곱을 반환하는 람다 함수를 생성한다.
- 숫자 8을 호출한다.
a = (lambda x: x*x)(8)
- What is the result of this code?
- 이 코드의 결과는 무엇인가?
triple = lambda x: x * 3
add = lambda x, y: x + y
print(add(triple(3), 4))
13