더북(TheBook)

우리는 함수의 이름이 avg인 것을 이미 알고 있기 때문에 전혀 새로운 정보라고 볼 수 없다. 하지만 한 가지 재미있는 기능은 이 객체에 새로운 이름을 부여할 수 있다는 것이다. 서로 다른 함수들을 모두 심벌릭 이름 avg로 지정할 수도 있다.

def new_func(a_list):
    return (sum(a_list) / len(a_list))

old_avg = avg
avg = new_func

앞으로 심벌릭 이름 old_avg는 우리가 앞서 선언한 더 오래되고 긴 함수를 참조하게 되며, 심벌릭 이름 avg는 이제 막 정의된 신규 함수를 참조하게 된다.

이제 이름 old_avg는 우리의 첫 평균 함수를 참조하게 되었고, avg를 호출했던 방식과 똑같이 호출할 수 있게 되었다.

>>> old_avg([4, 6])
The average is 5.0
5.0

정말 평범하지만 ‘메타함수(metafunction)’라고도 부를 수 있는 다음 함수는 인수로 전달받은 다른 함수의 정보를 출력하고 있다.

def func_info(func):
    print('Function name:', func.__name__)
    print('Function documentation:')
    help(func)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.