Mẹo Con trỏ là một tính năng của python
Kinh Nghiệm Hướng dẫn Con trỏ là một tính năng của python Mới Nhất
Hoàng Thế Quang đang tìm kiếm từ khóa Con trỏ là một tính năng của python được Update vào lúc : 2022-12-23 20:20:12 . Với phương châm chia sẻ Bí kíp Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi đọc Post vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Admin lý giải và hướng dẫn lại nha.Cấu trúc tài liệu trong Python không thực sự chứa những đối tượng. Chúng tham chiếu đến những đối tượng (còn gọi là "con trỏ")
Nội dung chính Show- Tham chiếu cùng một đối tượng ở nhiều nơiTránh tham chiếu cùng một đối tượngMột ouroboros. Một list chứa chính nóTóm lượcCon trỏ liệu có phải là một phần của Python không?Các tính năng con trỏ là gì?Ý nghĩa của con trỏ trong Python là gì?
Tham chiếu cùng một đối tượng ở nhiều nơi
Hãy lấy một list ba số không
Nếu tất cả chúng ta tạo một list mới như vậy này
>>> matrix = [row, row, row] >>> matrix [[0, 0, 0], [0, 0, 0], [0, 0, 0]]Chúng tôi sẽ kết thúc với một list những list số không. Bây giờ chúng tôi có ba list và mỗi list có ba số không bên trong nó
Nếu chúng tôi thay đổi một trong những giá trị trong list list này thành
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 5Bạn nghĩ điều gì sẽ xảy ra?
Chúng tôi đang yêu cầu thay đổi mục ở giữa trong list ở giữa
Vì vậy,
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 6 đang tham chiếu chỉ mục một bên trong >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 0, là list thứ hai (ở giữa). Chỉ mục một bên trong của >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 6 (i. e. >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 2) là phần tử thứ hai trong list đó, vì vậy tất cả chúng ta nên thay đổi số 0 ở giữa trong list ở giữa tại đâyĐó không phải là những gì xảy ra
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]]Thay vào đó, chúng tôi đã thay đổi số ở giữa trong mọi list
Điều này xảy ra vì list
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 0 của chúng tôi thực sự không chứa 3 list, nó chứa ba tham chiếu đến cùng một list>>> matrix[0] is matrix[1] TrueChúng ta đã nói về thực tế là tất cả những biến trong Python đều là con trỏ. **Biến trỏ tới đối tượng, chúng không chứa đối tượng. chúng không phải là thùng chứa đồ vật
Vì vậy, không in như nhiều ngôn từ lập trình khác, những biến của Python không phải là những thùng chứa những đối tượng. Tương tự như vậy, những cấu trúc tài liệu của Python cũng không phải là những thùng chứa những đối tượng. Cấu trúc tài liệu của Python chứa những con trỏ tới những đối tượng, chúng không chứa những đối tượng
Nếu tất cả chúng ta nhìn vào list
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 4, tất cả chúng ta sẽ thấy rằng nó đã và đang thay đổiChúng tôi đã tàng trữ ba con trỏ tới cùng một list. Khi chúng tôi "thay đổi" một trong những list này, chúng tôi đã thay đổi list đó (một trong hai loại thay đổi của chúng tôi trong Python). Và điều đó dường như thay đổi bất kỳ biến nào tham chiếu đến list đó
Vì vậy,
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 5, >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 6 và >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 4, tất cả đều là cùng một đối tượng. Chúng tôi hoàn toàn có thể xác minh điều này bằng phương pháp sử dụng >>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 8>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 0Tránh tham chiếu cùng một đối tượng
Nếu chúng tôi muốn tránh vấn đề này, chúng tôi hoàn toàn có thể tạo list ba list theo cách thủ công
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 1Điều này sẽ không gặp phải vấn đề tương tự, chính bới đây là ba list độc lập
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 2Chúng là những list rất khác nhau được tàng trữ trong những phần rất khác nhau của cục nhớ
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 3Một ouroboros. Một list chứa chính nó
Vì vậy, cấu trúc tài liệu chứa con trỏ, không phải đối tượng
Đây là minh chứng ở đầu cuối của thực tế này
Minh chứng ở đầu cuối của thực tế này là tất cả chúng ta hoàn toàn có thể lấy một list và dán list đó vào bên trong chính nó.
Tại thời điểm này, phần tử đầu tiên (và phần tử duy nhất) của list này là chính list đó
Và phần tử đầu tiên của list đó cũng đó đó là list đó
Chúng tôi hoàn toàn có thể lập chỉ mục list những list này tùy ý vì chúng tôi đã tạo cấu trúc tài liệu đệ quy vô hạn
>>> matrix [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 4Python đại diện cho list này tại dấu nhắc Python bằng phương pháp đặt ba dấu chấm bên trong những dấu ngoặc vuông đó (nó đủ thông minh để không hiển thị vô số dấu ngoặc vuông)
Chúng tôi đã không dính một chiếc xô bên trong chính nó ở đây. chúng tôi đã không dán một list bên trong cùng một list. Thay vào đó, chúng tôi dán một con trỏ vào một list bên trong chính nó
Danh sách được phép tàng trữ con trỏ tới bất kỳ thứ gì, kể cả chính chúng
Tóm lược
Điều đáng nói ở đây là in như những biến trong Python là con trỏ, cấu trúc tài liệu trong Python chứa con trỏ. Bạn không thể "chứa" một đối tượng bên trong một đối tượng khác trong Python, bạn thực sự chỉ hoàn toàn có thể trỏ đến một đối tượng. Bạn chỉ hoàn toàn có thể tham chiếu những đối tượng trong Python. Danh sách, bộ tài liệu, từ điển và tất cả những cấu trúc tài liệu khác có chứa con trỏ
Post a Comment