파이썬/파이썬(python) 중급

[19-1 파이썬] 함수를 인수로 사용할 때> 괄호 사용하지 X

Olivia-BlackCherry 2022. 8. 27. 21:10
함수()

함수의 형태를 생각해보자.

우리는 함수를 쓸 때, 함수 이름 끝에 ()괄호를 붙인다.

이 함수를 활성화하겠다는 뜻이다.

 

len(), list(), tuple(), add() 등 

우리가 아는 함수를 사용할 때를 떠올려 보면

거의 대부분 이런 형식이다.

 

functon(argument1, argument2, argument3)

함수를 호출할 때는 위의 형태이다.

괄호 안에 인수(argument)를 넣어준다.

 

 

그런데,

functon(argument1, argument2=함수)

위의 경우처럼 함수의 인수로, 함수가 들어올 때

예컨데, onkey(key=key, fun=fun)의 경우에는

함수에 괄호를 붙이지 않는다.

 

예시를 보기 위해,

먼저 onkey()에 대해 알아보자.

turtle의 매서드 중 하나인 onkey()는

onkey는 파라미터로 function과 key를 받는다. 

키 이벤트가 있을 때, function이 실행된다는 뜻이다.

 

 

screen.listen()

screen.onkey(key="space", fun=move_forwards)

 

 

끝에 괄호를 추가하지 않는 이유는

괄호를 하면,

이 함수가 그 자리에서 실행된다(활성화)는 뜻인데

함수를 다른 함수에 전달할 때 바로 실행되기를 원하지 않기 때문이다.

 

onkey()의 경우

space키를 누르는 시점에,

move_forwards 함수가 실행되기를 원한다.

 

함수의 인자로 함수를 입력할 때는

괄호를 입력하지 않음으로써,

함수가 활성화되는 시점을

미룬다.

 

 

다른 예시를 보자.

def add(n1, n2):
    return n1 + n2

def subtract(n1, n2):
    return n1 - n2

def multiply(n1, n2):
    return n1 * n2

def divide(n1, n2):
    return n1 / n2

# 함수 인자로 함수를 받는 경우 ()괄호 하지 않음
def calculator(n1, n2, func):
    return func(n1, n2)

result = calculator(2, 5, multiply)
print(result)

result = calculator(2, 5, divide)
print(result)

result = calculator(2, 5, subtract)
print(result)