如何以编程方式访问Python中方法的默认参数值?例如,在下面的
中def test(arg1='Foo'):
pass
如何访问'Foo'
内的字符串test
?
答案 0 :(得分:14)
它们存储在test.func_defaults
答案 1 :(得分:5)
考虑:
def test(arg1='Foo'):
pass
In [48]: test.func_defaults
Out[48]: ('Foo',)
.func_defaults
为您提供默认值,作为序列,以便参数出现在您的代码中。
显然,在{3}中可能已删除func_defaults
。
答案 2 :(得分:2)
RicardoCárdenes走在正确的轨道上。实际上,进入 test
内的test
功能将会变得更加棘手。 inspect
模块会让你更进一步,但它会变得丑陋:Python code to get current function into a variable?
事实证明,你可以在函数内部引用test
:
def test(arg1='foo'):
print test.__defaults__[0]
将打印出foo
。但只要test
实际定义为<{1}},引用test
只会有效:
>>> test()
foo
>>> other = test
>>> other()
foo
>>> del test
>>> other()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in test
NameError: global name 'test' is not defined
所以,如果你打算传递这个函数,你可能真的必须走inspect
路线:(
答案 3 :(得分:0)
这不是很优雅(根本没有),但它可以做你想要的:
def test(arg1='Foo'):
print(test.__defaults__)
test(arg1='Bar')
也适用于Python 3.x.