cuốn sách gpt4 ai đã làm

Hàm băm() của python có di động được không?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 01:04:25 hai mươi bốn 4
mua khóa gpt4 Nike

trănhàm bămChức năng này có di động không?

Ý tôi là "di động", liệu nó có trả về cùng một kết quả (cho cùng một dữ liệu) trên các phiên bản, nền tảng và triển khai python không?

Nếu không, có giải pháp thay thế nào cung cấp chức năng đó (trong khi vẫn có thể băm các cấu trúc dữ liệu phổ biến) không?


The documentationKhông đặc biệt hữu ích. Câu hỏi nàyĐề cập đến một thư viện dường như tung ra phiên bản của riêng nó, nhưng tôi không chắc liệu tính di động có phải là lý do cho nó hay không.

câu trả lời hay nhất

不,hàm băm() Tính di động không được đảm bảo.

Python 3.3 cũng sử dụng theo mặc địnhNgẫu nhiên băm, một số loại được băm bằng cách sử dụng hạt băm được chọn khi khởi động. Giá trị băm sẽ khác nhau giữa các lệnh gọi tới trình thông dịch Python.

từđối tượng.__hash__() tài liệu :

Theo mặc định, __băm__() các giá trị của các đối tượng str, byte và datetime được “muối” với một giá trị ngẫu nhiên không thể đoán trước. Mặc dù chúng không đổi trong một quy trình Python riêng lẻ, nhưng chúng không thể dự đoán được giữa các lần gọi Python lặp đi lặp lại.

Điều này nhằm mục đích cung cấp sự bảo vệ chống lại sự từ chối dịch vụ do các đầu vào được lựa chọn cẩn thận nhằm khai thác hiệu suất trong trường hợp xấu nhất của việc chèn chính tả, độ phức tạp O(n^2). http://www.ocert.org/advisories/ocert-2011-003.html để biết chi tiết.

Việc thay đổi giá trị băm ảnh hưởng đến thứ tự lặp của các ký tự, bộ và các ánh xạ khác. Python chưa bao giờ đưa ra đảm bảo về thứ tự này (và nó thường thay đổi giữa các bản dựng 32 bit và 64 bit).

Xem thêm hạt trăn.

Python 2.6.8 và 3.2.3 trở lên hỗ trợ chức năng tương tự nhưng thường bị tắt.

Python 3.2 đã giới thiệu một sys.hash_info tên tupleCung cấp cho bạn thông tin chi tiết về cách triển khai hàm băm của trình thông dịch hiện tại.

Nếu bạn cần một hàm băm di động, có nhiều cách triển khai. Thư viện tiêu chuẩn bao gồm một thư viện có tên hàm băm thư viện băm mật mã. ;Những triển khai này chắc chắn có thể mang theo được. Một lựa chọn khác là mm3 bưu kiệnnó cung cấpTriển khai hàm băm phi mật mã Murmur3 .

Trước tiên, các cấu trúc dữ liệu phổ biến cần được chuyển đổi thành byte; bạn có thể sử dụng tính năng tuần tự hóa cho việc này, ví dụ: jsonhoặc dưa chuamô-đun.

Giới thiệu về python - Hàm băm() của python có di động được không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/31170783/

hai mươi bốn 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress