Functions as Arguments
Coddy의 Python 데코레이터 코스 레슨. 12개 중 3번째.
Python에서는 함수를 다른 함수의 인자로 전달할 수 있습니다.
예를 들어,
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # 출력: 5
result = calculate(multiply_numbers, 2, 3)
print(result) # 출력: 6
이 예제에서는 add_numbers와 multiply_numbers라는 두 개의 함수를 정의합니다.
그런 다음 func라는 함수를 첫 번째 인자로 받고, 두 개의 추가 인자 a와 b를 받는 calculate라는 세 번째 함수를 정의합니다.
calculate를 호출할 때, 사용하고자 하는 함수의 이름(add_numbers 또는 multiply_numbers)을 func 인자로 전달하고, 연산하려는 두 숫자도 함께 전달합니다.
calculate 함수는 두 숫자와 함께 func 함수를 호출하고 그 결과를 반환합니다.
위의 예제에서 calculate를 두 번 호출합니다. 한 번은 add_numbers를 사용하고, 다른 한 번은 multiply_numbers를 사용합니다.
첫 번째 호출은 2와 3의 합(5)을 반환하고, 두 번째 호출은 2와 3의 곱(6)을 반환합니다.
챌린지
쉬움정수 리스트와 연산자 함수를 인자로 받는 list_operator라는 함수를 작성하세요.
operator 함수는 두 개의 정수를 입력으로 받아 하나의 정수를 결과로 반환해야 합니다.
list_operator 함수는 리스트에 있는 모든 인접한 정수 쌍에 대해 연산자 함수를 적용하고, 그 결과들로 구성된 새 리스트를 반환해야 합니다.
함수가 어떻게 작동해야 하는지에 대한 예시는 다음과 같습니다:
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]제약 사항
- 입력 리스트에는 항상 최소 두 개의 정수가 포함됩니다.
- 연산자 함수는 항상 두 개의 정수를 입력으로 받아 하나의 정수를 결과로 반환합니다.
참고! 연산자 함수는 저희가 제공하므로, 직접 만들 필요 없이 사용하기만 하면 됩니다.
직접 해보기
Python 데코레이터의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러