您是否可以在Python中修改func_defaults(Python 3.x中的__defaults__)?

all*_*ode 9 python

我已经尝试在Python 2.6中执行此操作,它确实"有效":

>>> def f(i='I'): return i
...
>>> f.func_defaults = (10,)
>>> f()
10
Run Code Online (Sandbox Code Playgroud)

但这是官方指定的行为,还是我遇到了特定于实现的行为?

Bre*_*arn 13

文档 func_defaults中记录为"可写",因此它似乎是定义的行为.

  • 这在实践中似乎也得到了尊重:它适用于IronPython 3.0.0,Jython 2.5.1+和pypy-1.9.1. (4认同)
  • @allyourcode:2.4中的新功能是`func_name`是可写的,而不是`func_defaults`. (3认同)