Python

[Python] 함수의 매개변수 목록 확인하기

비번변경 2024. 10. 18. 11:53

개요

함수 내에서 매개변수에 대한 반복 작업을 하고 싶은데, 그러기 위해서는 매개변수 목록에 대한 정보가 먼저 있어야 한다. 이번 글에서는 Python에서 함수의 매개변수 목록을 얻는 방법을 적어둔다.

 

 

inspect

Python inspect 모듈은 모듈, 클래스, 메서드, 함수 등과 같은 객체애 대한 정보를 얻을 때 유용한 함수를 제공한다. 클래스의 내용을 검사하거나, 메서드의 소스 코드를 얻거나, 함수의 인자 리스트를 추출하는 등이 포함된다.

기본 Python 내장 모듈로 별도 설치 없이 바로 import 하여 사용할 수 있다.

import inspect

 

아래에 함수의 인자 리스트를 추출할 때 사용하는 함수를 정리한다.

 

 

getfullargspec

inspect.getfullargspec(func)

함수의 매개변수 이름과 기본값을 가져온다.

 

예시 )

import inspect

def foo(a, b: int = 4, *args, **kwargs) -> None:
    pass

print(inspect.getfullargspec(foo))

반환값을 확인해보면 매개변수의 이름 목록(args), * 매개변수의 이름(varargs), ** 매개변수의 이름(varkw), 그리고 그 기본값들과 매개변수의 타입 어노테이션(annotations)을 포함하고 있다.

 

 

signature

inspect.signature(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)

일반 함수, 클래스, functools.partial callable 객체의 호출 서명과 반환값에 대한 어노테이션을 가져온다. Signature 객체가 반환값이 된다.

 

 

예시 )

import inspect

def foo(a, b: int = 4, *args, **kwargs) -> None:
    pass

print(inspect.signature(foo))

 

 

 

참고 문서

https://docs.python.org/ko/3/library/inspect.html#inspect.getfullargspec

https://python.flowdas.com/library/inspect.html

https://www.geeksforgeeks.org/how-to-get-list-of-parameters-name-from-a-function-in-python/