次のような関数があるとします。
def myFunction(arg1='a default value'):
pass
introspection を使用してmyFunction()
を使用して取る引数の名前を見つけることができmyFunction.func_code.co_varnames
ますが、 のデフォルト値arg1
('a default value'
上記の例にあります) を見つけるにはどうすればよいでしょうか?
次のような関数があるとします。
def myFunction(arg1='a default value'):
pass
introspection を使用してmyFunction()
を使用して取る引数の名前を見つけることができmyFunction.func_code.co_varnames
ますが、 のデフォルト値arg1
('a default value'
上記の例にあります) を見つけるにはどうすればよいでしょうか?
次のような関数を定義するとf
:
>>> def f(a=1, b=True, c="foo"):
... pass
...
Python 2 では、以下を使用できます。
>>> 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')
関数の属性を探す代わりに、少し使いやすいインターフェースの inspect モジュールを使用できます。
Python 3.x インタープリターの場合:
import inspect
spec = inspect.getfullargspec(myFunction)
次に、 spec はやFullArgSpec
などの属性を持つオブジェクトです。args
defaults
FullArgSpec(args=['arg1'], varargs=None, varkw=None, defaults=('a default value',), kwonlyargs=[], kwonlydefaults=None, annotations={})
これらの属性の一部は Python 2 では使用できないため、古いバージョンを使用する必要がある場合はinspect.getargspec(myFunction)
、Python 3 の機能がなくても同様の値が得られます (Python 3getargspec
でも動作しますが、Python 3.0 以降は非推奨になっているため、使用しないでください)。 :
import inspect
spec = inspect.getargspec(myFunction)
次に、 spec はやArgSpec
などの属性を持つオブジェクトです。args
defaults
ArgSpec(args=['arg1'], varargs=None, keywords=None, defaults=('a default value',))
私の悪い。もちろん、ありmyFunction.func_defaults
ます。