2009-10-22 19 views

Trả lời

7

Từ What's New in Python 3.0

Các thuộc tính hàm có tên func_X đã được đổi tên để sử dụng các hình thức __X__, giải phóng các tên này trong không gian tên thuộc tính chức năng cho các thuộc tính người dùng định nghĩa. Để wit, func_closure, func_code, func_defaults, func_dict, func_doc, func_globals, func_name được đổi tên thành __closure__, __code__, __defaults__, __dict__, __doc__, __globals__, __name__, tương ứng.

Về cơ bản, cùng một công cụ Python 2 cũ, tên Python 3000 mới lạ.

Bạn có thể tìm hiểu thêm về hầu hết các trong PEP 232

+1

Tôi đọc về 'func_closure' ở đâu? –

+0

@ cool-RR Chỉ cần thử nó tương tác, tất cả đều rất đơn giản. –

+0

Tôi đã thử, không hiểu. –

0

Đây là những special phương pháp của Python.

4

Họ thường được gọi là

func_closure (now __closure__), func_code (now __code__) 

(mà sẽ giúp googling).

Giải thích ngắn from here bên dưới.

  • func_closure: Không có hoặc một tuple của các tế bào có chứa các ràng buộc cho các biến miễn phí của chức năng (read-only)
  • func_code: Các đối tượng đang đại diện cho biên soạn chức năng cơ thể (ghi)
6

Bạn thực sự có lĩnh vực tương tự trong CPython 2.x:

>>> first = lambda x: lambda y: x 
>>> f = first(2) 
>>> type(f.func_code) 
<type 'code'> 
>>> map(type, f.func_closure) 
[<type 'cell'>] 

Edit: Để biết thêm chi tiết về ý nghĩa của các cấu trúc này, vui lòng đọc về "hàm do người dùng xác định" và "đối tượng mã" explained in the Data Model chương của Tham chiếu Python.