에서 위치 인수의 이름을 얻을, 나는 몇 가지 기능, 즉 모든 위치 인수의 이름을 얻으려고 : 지금파이썬 3.x를 사용하여 함수의 서명
def foo(a, b, c=1):
return
을 나는이 일을 해요 :
from inspect import signature, _empty
args =[x for x, p in signature(foo).parameters.items() if p.default == _empty]
기능이 * 인수를 alows 즉 :
def foo(a, b, c=1, *args):
return
내가 줄을 추가 해요 :
args.remove("args")
더 좋은 방법이 있는지 궁금합니다.
* 인수의 경우 처리하는 하나의 좋은 방법 suggested by Jim Fasarakis-Hilliard으로하는 Parameter.kind을 사용하고 있습니다 :
는from inspect import signature, Parameter
args =[]
for x, p in signature(foo).parameters.items():
if p.default == Parameter.empty and p.kind != Parameter.VAR_POSITIONAL:
args.append(x)
'args'는 어떤 종류의 "* agreement *"일 뿐이므로 원하는 매개 변수를 호출 할 수 있습니다. 따라서이 매개 변수가 작동하지 않는 경우가있을 수 있습니다. –
사실, 그 질문을하는 이유 중 하나입니다. 지금은 내 자신의 기능을 위해 이것을 사용하고 args 규약을 따르지만 좀 더 "견고한"방법으로 동일한 것을 달성하는 방법을 궁금해합니다. –