본문 바로가기
Programing/Python

Python Lambda Expressions: 파이썬 람다 표현식 사용법

by 멍멍돌이야 2023. 3. 6.
반응형

이 자습서에서는 Python 람다 식과 이를 사용하여 익명 함수를 작성하는 방법에 대해 알아봅니다.

 

경우에 따라 하나의 표현식을 포함하는 간단한 함수를 작성해야 합니다. 단, 이 기능은 한 번만 사용해야 합니다. 그리고 def 키워드로 해당 함수를 정의할 필요가 없습니다.

여기에서 Python 람다 표현식이 사용됩니다.

 

1. 파이썬 람다 표현식이란?

Python 람다 식을 사용하면 익명 함수를 정의할 수 있습니다.

익명 함수는 이름이 없는 함수입니다. 익명 함수는 한 번만 사용해야 할 때 유용합니다.

람다 식은 일반적으로 하나 이상의 인수를 포함하지만 식은 하나만 가질 수 있습니다.

다음은 람다 식 구문을 보여줍니다.

lambda parameters: expression

 

"익명" 이름이 없는 다음 함수와 동일합니다.

def anonymous(parameters):
    return expression

 

 

2. Python 람다 식 예제

Python에서는 함수를 다른 함수에 전달하거나 다른 함수에서 함수를 반환할 수 있습니다.

 

1) 함수 예제를 받아들이는 함수

다음은 이름과 성에서 전체 이름을 형식화하는 get_full_name()이라는 함수를 정의합니다.

def get_full_name(first_name, last_name, formatter):
    return formatter(first_name, last_name)

 

get_full_name() 함수는 세 가지 인수를 허용합니다.

 

  • First name (first_name)
  • Last name (last_name)
  • 전체 이름을 형식화하는 기능(포매터). 차례로 formatter 함수는 이름과 성을 두 개의 인수로 받아들입니다.

다음은 이름과 성에서 다른 형식으로 전체 이름을 반환하는 두 가지 함수를 정의합니다.

def first_last(first_name, last_name):
    return f"{first_name} {last_name}"


def last_first(first_name, last_name):
    return f"{last_name}, {first_name}"

 

 

그리고 다음은 이름, 성 및 first_last / last_first 함수를 전달하여 get_full_name() 함수를 호출하는 방법을 보여줍니다.

full_name = get_full_name('John', 'Doe', first_last)
print(full_name) # John Doe

full_name = get_full_name('John', 'Doe', last_first)
print(full_name) #  Doe, John

 

Output:

John Doe
Doe, John

 

first_last 및 last_first 함수를 정의하는 대신 람다 식을 사용할 수 있습니다.

예를 들어 다음 람다 식을 사용하여 first_last 함수를 표현할 수 있습니다.

lambda first_name,last_name: f"{first_name} {last_name}"

 

이 람다 식은 두 개의 인수를 받아 first_name, space 및 last_name 순서로 형식이 지정된 문자열로 연결합니다.

그리고 다음은 전체 이름을 성, 공백 및 이름 형식으로 반환하는 람다 식을 사용하여 last_first 함수를 변환합니다.

lambda first_name, last_name: f"{last_name} {first_name}";

 

람다 식을 사용하여 다음과 같이 get_full_name() 함수를 호출할 수 있습니다.

def get_full_name(first_name, last_name, formatter):
    return formatter(first_name, last_name)


full_name = get_full_name(
    'John',
    'Doe',
    lambda first_name, last_name: f"{first_name} {last_name}"
)
print(full_name)

full_name = get_full_name(
    'John',
    'Doe',
    lambda first_name, last_name: f"{last_name} {first_name}"
)
print(full_name)

 

Output:

John Doe
Doe, John

 

2) 함수를 반환하는 함수 예제

다음 times() 함수는 람다 식인 함수를 반환합니다.

def times(n):
    return lambda x: x * n

 

이 예제는 times() 함수를 호출하는 방법을 보여줍니다.

double = times(2)

 

times() 함수는 함수를 반환하므로 double도 함수입니다. 호출하려면 다음과 같이 괄호를 사용합니다.

result = double(2)
print(result)

result = double(3)
print(result)

 

Output:

4
6

 

다음은 times() 함수를 사용하는 또 다른 예를 보여줍니다.

triple = times(3)

print(triple(2))  # 6
print(triple(3))  # 9

 

 

3. 루프의 파이썬 람다

다음 예를 참조하십시오.

callables = []
for i in (1, 2, 3):
    callables.append(lambda: i)

for f in callables:
    print(f())

작동 방식.

  • 먼저 이름이 callables인 목록을 정의합니다.
  • 둘째, 1에서 3까지 반복하고, 각 반복에서 새 람다 식을 만들고, 호출 가능 항목 목록에 추가합니다.
  • 셋째, 콜러블을 반복하고 각 함수를 호출합니다.
         

예상 출력은 다음과 같습니다.

1
2
3

 

그러나 프로그램은 다음 출력을 표시합니다.

3
3
3

 

문제는 모든 람다 표현식이 i의 현재 값이 아니라 i 변수를 참조한다는 것입니다. 

람다 식을 호출할 때 변수 i의 값은 3입니다.

이 문제를 해결하려면 람다 식이 생성될 때 i 변수를 각 람다 식에 바인딩해야 합니다. 이를 수행하는 한 가지 방법은 기본 인수를 사용하는 것입니다.

callables = []
for i in (1, 2, 3):
    callables.append(lambda a=i: a)

for f in callables:
    print(f())

 

이 예에서 a 값은 람다 식이 생성될 때 평가됩니다. 따라서 프로그램은 예상 출력을 반환합니다.

 

4. Summary

  • Python 람다 식을 사용하여 이름이 없는 함수인 익명 함수를 만듭니다.
  • 람다 식은 하나 이상의 인수를 허용하고 식을 포함하며 해당 식의 결과를 반환합니다.
  • 람다 식을 사용하여 익명 함수를 함수에 전달하고 다른 함수에서 함수를 반환합니다.
         
         

 

refreance: https://www.pythontutorial.net/python-basics/python-lambda-expressions/
728x90
반응형

댓글