在Python中访问默认参数值

时间:2012-01-10 16:15:47

标签: python

如何以编程方式访问Python中方法的默认参数值?例如,在下面的

def test(arg1='Foo'):
    pass

如何访问'Foo'内的字符串test

4 个答案:

答案 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.