2011-02-01 6 views
7

파이썬의 다른 함수에서 특정 함수의 인수의 기본값을 찾는 방법은 무엇입니까?

def myFunction(arg1='a default value'): 
    pass 

우리는 introspection을 사용하여 myFunction()가 사용하는 인수의 이름을 알아낼 수 있지만 arg1의 기본값을 찾는 방법 ('a default value'는 위의 예)?

+0

내가 대신 위키 만들 수 :

import inspect spec = inspect.getargspec(myFunction) 

다음 사양은 argsdefaults 같은 속성을 가진 ArgSpec 목적은 무엇입니까? 나는 그것을하는 방법을 찾을 수 없습니다. 나는 질문을 한 직후 대답을 발견 했으므로, 나 자신의 질문에 답한 이후에 위키로 만들면 더 좋다. – Srikanth

+0

@ Josh : 감사합니다. 던컨 (Duncan)의 답변이 훨씬 좋았습니다. 대신 대답 하나를 표시했습니다. – Srikanth

답변

9

로 함수의 속성에 뿌리를 내리는 것 대신 inspect 모듈을 약간 더 친숙하게 사용할 수 있습니다. 인터페이스 :

ArgSpec(args=['arg1'], varargs=None, keywords=None, defaults=('a default value',)) 
+2

변수 이름과 기본값 (있는 경우)을 얻었으므로 훨씬 좋습니다. –

0

나쁨. 물론 myFunction.func_defaults이 있습니다. 이 같은 기능 f를 정의하는 경우

7

:

>>> def f(a=1, b=True, c="foo"): 
...  pass 
... 

파이썬 2에서 사용할 수 있습니다

>>> f.func_defaults 
(1, True, 'foo') 
>>> help(f) 
Help on function f in module __main__: 
f(a=1, b=True, c='foo') 

을 반면 파이썬 3에서, 그것의 :

>>> f.__defaults__ 
(1, True, 'foo') 
>>> help(f) 
Help on function f in module __main__: 
f(a=1, b=True, c='foo') 
+2

Duncan의 답변을 확인하십시오.이 답변은 이보다 훨씬 낫습니다. –