우리는 함수의 이름이 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)