2012-12-09 37 views
7

tôi đã cố gắng làm điều này bằng Python 2.6, và nó "làm việc":Bạn có được phép sửa đổi func_defaults (__defaults__ bằng Python 3.x) bằng Python không?

>>> def f(i='I'): return i 
... 
>>> f.func_defaults = (10,) 
>>> f() 
10 

Nhưng là này chính thức quy định hành vi, hay tôi đánh một hành vi thực hiện cụ thể?

+2

Chỉ vì nó hoạt động không có nghĩa là bạn nên thực sự * làm * nó! –

+1

Do đó câu hỏi này. – allyourcode

Trả lời

11

Trong the documentationfunc_defaults được ghi là "có thể ghi", do đó, dường như hành vi được xác định.

+0

Tuyệt vời! Tài liệu cũng cho biết điều này mới là 2.4. – allyourcode

+4

Điều này dường như được tôn trọng trong thực tế quá: nó hoạt động trong IronPython 3.0.0, Jython 2.5.1+, và pypy-1.9.1. – DSM

+3

@allyourcode: Có gì mới trong 2,4 là 'func_name' có thể ghi, không phải' func_defaults'. – BrenBarn

Các vấn đề liên quan