이 자습서에서는 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/
'Programing > Python' 카테고리의 다른 글
Python List/Array: 배열 (0) | 2023.03.06 |
---|---|
Python Function Docstrings (0) | 2023.03.06 |
Python Recursive Functions: 재귀 함수란 (0) | 2023.03.06 |
Python Keyword Arguments: 키워드 인수 소개 (0) | 2023.03.06 |
Python Default Parameters: 파이썬 기본 매개변수 (0) | 2023.03.06 |
댓글