2011-02-01 19 views
7

は、我々はこのような機能を持っているとしましょう:Pythonの別の関数で特定の関数の引数のデフォルト値を調べる方法は?

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

我々は'a default value'ある(myFunction()myFunction.func_code.co_varnamesを使用して取ることを引数の名前を見つけるためにイントロスペクションを使用することができますが、arg1のデフォルト値を見つける方法上記の例では)?

+0

は、私が代わりにこのウィキ加えることができます。

import inspect spec = inspect.getargspec(myFunction) 

その後仕様は、このようなargsdefaultsなどの属性を持つArgSpecオブジェクトがありますか?私はそれを行う方法を見つけることができません。私は質問をした直後に答えを見つけました。私自身の質問に答えたので、私はwikiにしてください。 – Srikanth

+0

@ジョシュ:ありがとう。ダンカンからはるかに良い答えが得られました。代わりに受け入れられた答えとしてマークされました。 – Srikanth

答えて

9

として、関数の属性に根を張る代わりに、inspectモジュールを少し面白く使うことができますインターフェース:

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

変数名とそのデフォルト値(もしあれば)も取得するので、はるかに優れています! –

0

悪いです。もちろん、myFunction.func_defaultsがあります。

7

あなたはこのように機能fを定義する場合:Pythonの2の

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

、あなたが使用することができます。

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

のPython 3で、それはだのに対し:

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

ダンカンの答えをチェックしてください。これはこれよりはるかに優れています。 –

関連する問題