이전에 허용 대답이되어 사용되지 않는 현재의 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
표준 라이브러리 모듈에 대한 정당성이 없습니다 .