Expression
Lambda 예제
# lambda arguments : expression
# example 1
x = lambda a : a + 10
print(x(5))
x = lambda a,b : a * b
print(x(3,5))
x = lambda a,b,c : a + b + c
print(x(1,2,3))
Lamdbda function을 사용하는 이유
- Lambda의 강점은 다른 function 내에서 익명함수를 쓸 수 있다는 점이다. ```python def getSome(a): return lambda a : a * n
getAny = getSome(5)
print(getAny(11)
> 결과값 : 55
### Syntax
> No Statements
A lambda function can’t contain any statements.
```python
>>> (lambda x: assert x == 2)(2)
File "<input>", line 1
(lambda x: assert x == 2)(2)
^
SyntaxError: invalid syntax
Single Expression
>> (lambda x: ... (x % 2 and 'odd' or 'even'))(3) 'odd'
Type Annotation
함수에서 사용하는 Type hint를 Lambda에서는 사용할 수 없다.
# function
def full_name(first: str, last: str) -> str:
return f'{first.title()} {last.title()}'
# lambda function
>>> lambda first: str, last: str: first.title() + " " + last.title() -> str
File "<stdin>", line 1
lambda first: str, last: str: first.title() + " " + last.title() -> str
SyntaxError: invalid syntax
IIFE(Immediately Invoked Function Execution)
- Lambda에 값을 대입하여 바로 함수를 실행하도록 할 수 있다.
result = (lambda x: x * x)(4) print(result) # result = 16
Arguments
(lambda x, y, z: x + y + z)(1, 2, 3) # result = 6
(lambda x, y, z=3: x + y + z)(1, 2) # result = 6
(lambda x, y, z=3: x + y + z)(1, y=2) # result = 6
(lambda *args: sum(args))(1,2,3) # result = 6
(lambda **kwargs: sum(kwargs.values()))(one=1, two=2, three=3) # result = 6
(lambda x, *, y=0, z=0: x + y + z)(1, y=2, z=3) # result = 6