함수에 전달되는 인자(argument)의 개수와 이름을 추출하고 싶다면 파이썬의 inspect 모듈을 사용하면 됩니다. 예를 들어 어떤 함수의 매개변수 목록을 ('arg1', 'arg2') 형태로 얻어야 할 때 이 모듈이 유용하게 활용됩니다.
아래 코드는 inspect 모듈을 사용해 aMethod와 foo 함수 내부에 정의된 매개변수 정보를 조회하는 방법을 보여줍니다.
예제
import inspect def aMethod(arg1, arg2): pass print(inspect.getargspec(aMethod)) def foo(a,b,c=4, *arglist, **keywords): pass print(inspect.getargspec(foo))
출력 결과
ArgSpec(args=['arg1', 'arg2'], varargs=None, keywords=None, defaults=None) ArgSpec(args=['a', 'b', 'c'], varargs='arglist', keywords='keywords', defaults=(4,))
출력 결과에서 args는 일반 매개변수 목록, varargs는 가변 위치 인자(*args), keywords는 키워드 인자(**kwargs), defaults는 기본값 튜플을 의미합니다.
참고: 최신 파이썬 버전에서는 getfullargspec 또는 signature 사용 권장
inspect.getargspec()은 파이썬 3.0부터 폐기(deprecated)되었으며, 3.11 버전에서 완전히 제거되었습니다. 따라서 최신 환경에서는 inspect.getfullargspec() 또는 inspect.signature()를 사용하는 것이 좋습니다.
import inspect def foo(a, b, c=4, *arglist, **keywords): pass sig = inspect.signature(foo) print(sig) # (a, b, c=4, *arglist, **keywords) print(list(sig.parameters)) # ['a', 'b', 'c', 'arglist', 'keywords']
signature() 객체의 parameters 속성을 활용하면 각 매개변수의 이름뿐 아니라 기본값, 어노테이션 등 더욱 상세한 정보도 함께 확인할 수 있습니다.