我试着在Python 2.6这样做,它也“工作”:您是否允许在Python中修改func_defaults(Python 3.x中的__defaults__)?
>>> def f(i='I'): return i
...
>>> f.func_defaults = (10,)
>>> f()
10
但是,这是官方指定的行为,还是我打一个具体的实施行为?
我试着在Python 2.6这样做,它也“工作”:您是否允许在Python中修改func_defaults(Python 3.x中的__defaults__)?
>>> def f(i='I'): return i
...
>>> f.func_defaults = (10,)
>>> f()
10
但是,这是官方指定的行为,还是我打一个具体的实施行为?
the documentationfunc_defaults
记录为“可写”,因此它似乎是定义的行为。
太棒了! Docs也表示这是2.4的新增功能。 – allyourcode
这似乎也在实践中受到尊重:它适用于IronPython 3.0.0,Jython 2.5.1+和pypy-1.9.1。 – DSM
@allyourcode:2.4中的新功能是'func_name'是可写的,而不是'func_defaults'。 – BrenBarn
只是因为它的作品并不意味着你应该真的*做*它! –
因此这个问题。 – allyourcode