Xuất hiện trong python 2.7.8. 3.4.1 Điều này không xảy ra.
Ví dụ:
>>>id(id)
140117478913736
>>>id(id)
140117478913736
>>>id(id)
140117478913736
>>> id(id(id))
38775176
>>> id(id(id))
38775176
>>> id(id(id))
38775176
>>> id(id(id(id)))
38775152
>>> id(id(id(id)))
38775224
>>> id(id(id(id)))
38775176
...Chờ đợi. Dòng cuối cùng sẽ luôn trả về ba giá trị này, lặp qua chúng.
5 "id": luôn có cùng giá trị.
6 "id": Lặp qua ba giá trị.
nhận dạng()
Kết quả được đảm bảo giống nhau trong suốt thời gian của đối tượng bạn truyền vào.
Vì vậy, chỉ cần các thông số NHẬN DẠNG
hiện hữu,id(id)
sẽ tạo ra kết quả tương tự. Đây là mãi mãi.
Nhưng,id(id(id))
sẽ chỉ tạo ra kết quả tương tự nếuid(id)
Kết quả tồn tại, nhưng đối tượng này chỉ có thể là tạm thời.trùng hợpTrả về cùng một kết quả nhiều lần, nhưng bạn không thể dựa vào hành vi này. Tôi có thể chứng minh:
>>> id(id(id))
12345
>>> id(id(id))
12345 # trùng hợp!
>>> [1, 2, 3]
[1, 2, 3]
>>> id(id(id))
98765# giờ đã khác rồi!
Vì vậy, những gì bạn đang thấy chỉ là sự trùng hợp ngẫu nhiên của các mẫu phân bổ trong quá trình triển khai Python.
Tại sao ba chu kỳ?
Trong Python của bạn, tôi đoán điều này đang xảy ra. Bên trái là biểu thức được đánh giá, bên phải là vùng heap.
id(id(id)) [ ]
id(140117478913736) [ 140117478913736 ] # đánh giá
38775176 [ 140117478913736, 38775176 ] # đánh giá
[ _ , 38775176 ] # giảm
id(id(id)) [ _ , 38775176 ]
id(140117478913736) [ 140117478913736, 38775176 ] # đánh giá
bạn có thể thấy id(id(id))
, mỗi đối tượng chiếm vị trí đầu tiên trong heap, bởi vì id(id)
Luôn vào cùng một ô và bạn luôn nhận được kết quả tương tự...trừ khi bạn chỉ định thứ gì đó!
Giới thiệu về python - Tại sao id(id) và id(id(id)) luôn trả về cùng một giá trị, trong khi id(id(id(id))) "vòng lặp" nhiều hơn 3 giá trị? , 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/25318978/
Tôi là một lập trình viên xuất sắc, rất giỏi!