우리는 함수의 이름이 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)
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.