카테고리 없음

[python] lambda expression(람다 표현식)

haju 2023. 6. 18. 14:18

✅ 람다 표현식은 함수를 간편하게 작성할 수 있어 다른 함수의 인수로 넣을 때 주로 사용함

 

✅ 문법 

lambda 매개변수들 : 식

✅ def 함수와 비교하기

▶ def

def plus_ten(x):
    return x+10

print(plus_ten(1))

▶ lambda

print(lambda x:x+10)

ㄴ 결과값이 함수 객체로 나옴. 이 상태는 함수를 호출할 수 없다. 

ㄴ 왜냐하면 람다 표현식은 이름이 없는 함수를 만들기 때문! ➡ anonumous function (익명함수)라고도 함

 

▶ lambda로 만든 익명 함수 호출하기 위해서는 변수에 람다 표현식 할당해야함

plus_ten=lambda x:x+10
print(plus_ten(1))

 

▶ 람다 표현식 살펴보기

  • lambda x : x+10 은 매개변수 x 하나를 받고, x에 10을 더해서 반환한다는 뜻
  • 즉, 매개변수, 연산자, 값 등을 조합한 식으로 반환값을 만드는 방식

▶ def로 만든 함수와 람다 표현식

 

✅ 람다 표현식 자체를 호출 ( 변수에 할당 X)

▶ 문법

(lambda 매개변수들 : 식)(인수들)

▶ 예제

print((lambda x:x+10)(1))

 

✅ 람다 표현식 안에서는 변수를 만들 수 없음 ❗

  • 반환값 부분은 변수 없이 식 한 줄로 표현할 수 있어야한다.
  • 변수가 필요한 코드일 경우 def로 작성하자!
print((lambda x:y=10;x+y)(1))

에러남

✅ 람다 표현식 바깥의 변수는 사용할 수 있음

  • 매개변수 x와 람다 표현식 바깥의 변수 y를 더해서 반환함
y=10
print((lambda x:x+y)(1))

 

✅ 람다 표현식을 사용하는 이유

  • 함수의 인수 부분에서 간단하게 함수를 만들 수 있음
  • 대표적인 예로 map
def plus_ten(x):
    return x+10

print(list(map(plus_ten,[1,2,3])))

print(list(map(lambda x :x+10,[1,2,3])))

 

✅ 람다 표현식으로 매개변수가 없는 함수 만들기

  • lambda 뒤에 아무것도 지정하지 않고 :(콜론)을 붙인다.
  • 콜론 뒤에는 반환할 값이 반드시 있어야함!
print((lambda :1)())
x=10
print((lambda :x)())