得到func的可变默认参数

时间:2014-04-16 17:00:50

标签: python python-3.x arguments signature

如何在Python 3中获取可变的默认参数元组?

def foo(x=[]):
    pass

尝试失败:

foo.func_defaults

错误:

AttributeError: 'function' object has no attribute 'func_defaults'

1 个答案:

答案 0 :(得分:3)

您应该使用__defaults__,就像这样

def foo(x=[]):
    x.append(1)

foo()
foo()
print(foo.__defaults__)
# ([1, 1],)

引自data model

  

<强> __默认__

     

包含具有默认值的参数的默认参数值的元组,如果没有参数具有默认值,则为None

这意味着,如果您的某个函数没有默认参数,那么__defaults__将为None

def foo():
    pass

print(foo.__defaults__)
# None