2012-03-15 30 views

Trả lời

24

Một vài lý do:

  • đối tượng Mutable như danh sách không thể được sử dụng như phím từ điển hoặc thiết lập các thành viên trong Python, vì họ không phải hashable. Nếu danh sách được đưa ra __hash__ phương pháp dựa trên nội dung của chúng, các giá trị được trả về có thể thay đổi khi nội dung thay đổi, vi phạm hợp đồng cho giá trị băm.
  • Nếu Python chỉ có trình tự có thể thay đổi, các nhà thầu chấp nhận trình tự thường cần phải sao chép chúng để đảm bảo rằng các chuỗi không thể được sửa đổi bởi mã khác. Các nhà xây dựng có thể tránh việc sao chép phòng thủ bằng cách chỉ chấp nhận các bộ dữ liệu. Tốt hơn, họ có thể vượt qua đối số chuỗi thông qua phương pháp tuple sẽ chỉ sao chép khi cần thiết.
+0

Giá trị băm của chúng có thể thay đổi? Huh? – wim

+2

wim -> hash vaules thay đổi khi danh sách thay đổi. Danh sách có thể thay đổi nếu có ref ở đâu đó khác trong danh sách. –

+0

danh sách không thể thực hiện được. – wim

1

Vì nếu không sẽ không có loại trình tự bất biến! Nếu bạn muốn một tuple mutable bạn chỉ cần sử dụng một danh sách.

Sử dụng các loại không thay đổi khi thích hợp có các đặc quyền hiệu suất khác nhau và bạn không thể dễ dàng sử dụng dict với các khóa tuple nếu chúng được thay đổi.

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