이전에 허용 대답이되어 사용되지 않는 현재의 Python 3.0. 사용하는 대신 inspect.getargspec이제 Signature이를 대체 한 클래스를 선택해야 합니다.
함수를 통해 쉽게 서명을 작성할 수 signature있습니다 .
from inspect import signature
def someMethod(self, arg1, kwarg1=None):
pass
sig = signature(someMethod)
이제 매개 변수를 사용하여 해당 매개 변수를 빠르게 볼 수 있습니다 str.
str(sig) # returns: '(self, arg1, kwarg1=None)'
또는을 통해 속성 이름을 매개 변수 객체에 매핑 할 수도 있습니다 sig.parameters.
params = sig.parameters
print(params['kwarg1']) # prints: kwarg1=20
또한 호출 할 수 있습니다 len에 sig.parameters이 기능이 필요 인수의 수를 볼 수 :
print(len(params)) # 3
params매핑의 각 항목 은 실제로 인생을 편하게 해주는 추가 속성을 가진 Parameter객체 입니다. 예를 들어, 매개 변수를 잡고 기본값을 보는 것은 이제 다음을 통해 쉽게 수행 할 수 있습니다.
kwarg1 = params['kwarg1']
kwarg1.default # returns: None
에 포함 된 나머지 개체에 대해서도 유사합니다 parameters.
Python 2.x사용자의 경우 더 이상 사용되지 inspect.getargspec 않지만 언어는 곧 :-)입니다. Signature클래스는 사용할 수 없습니다 2.x시리즈되지 않습니다. 따라서 여전히 작업해야합니다 inspect.getargspec.
당신이 코드가있는 경우 파이썬 2와 3 사이의 전환에 관해서는,의 인터페이스에 의존하는 getargspec파이썬 2와 전환 signature에하는 것은 3너무 어렵습니다, 당신은 가치있는 옵션이 있습니까 사용을 inspect.getfullargspec. getargspec함수의 인수를 가져 와서 다음과 같은 일부 추가 사례를 처리하기 위해 (호출 가능한 단일 인수) 와 유사한 인터페이스를 제공합니다 getargspec.
from inspect import getfullargspec
def someMethod(self, arg1, kwarg1=None):
pass
args = getfullargspec(someMethod)
와 마찬가지로 getargspec, getfullargspec반환 NamedTuple인수를 포함하는.
print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})
inspect표준 라이브러리 모듈에 대한 정당성이 없습니다 .