Chúng ta có thể "thay đổi" một biến bằng cách thay đổi đối tượng mà biến đó đang trỏ tới. Chúng tôi làm điều đó thông qua một câu lệnh gán
Chúng ta cũng có thể "thay đổi" một đối tượng thực tế thông qua một đột biến
Hãy xem xét cả hai loại thay đổi
bài tập
Giả sử chúng ta có một biến
>>> y = x
>>> id [y]
2253221094088
1 trỏ đến giá trị 4Chúng ta có thể sử dụng hàm id tích hợp để lấy vị trí bộ nhớ của đối tượng mà biến này
>>> y = x
>>> id [y]
2253221094088
1 đang trỏ tới [mã định danh duy nhất này sẽ không bao giờ thay đổi trong suốt vòng đời của một đối tượng]Nếu chúng ta trỏ
>>> y = x
>>> id [y]
2253221094088
1 đến một đối tượng mới, chẳng hạn như một danh sách, thì >>> y = x
>>> id [y]
2253221094088
4 sẽ thay đổi>>> x = [1, 2, 3]
>>> id[x]
2253221094088
Nếu chúng ta gán
>>> y = x
>>> id [y]
2253221094088
5 cho >>> y = x
>>> id [y]
2253221094088
1, điều này sẽ làm cho >>> y = x
>>> id [y]
2253221094088
5 trỏ đến cùng một vị trí bộ nhớ như >>> y = x
>>> id [y]
2253221094088
1>>> y = x
>>> id [y]
2253221094088
Đây là kiểu thay đổi đầu tiên. phân công. Chúng ta có thể thay đổi đối tượng mà một biến đang trỏ tới bằng cách thực hiện một phép gán
đột biến
Loại "thay đổi" thứ hai là đột biến. Chuyển nhượng thay đổi biến, nhưng đột biến thay đổi đối tượng
Hầu hết các đối tượng Python có thể được thay đổi sau khi chúng được tạo. Tất cả các danh sách, bộ và từ điển đều có thể được thay đổi, trong khi bộ, số và chuỗi thì không thể. Các đối tượng có thể thay đổi được gọi là có thể thay đổi và hành động thay đổi một trong các đối tượng này là một đột biến
Phép gán gần như luôn liên quan đến dấu hiệu
>>> y = x
>>> id [y]
2253221094088
9, trong khi đột biến có thể có nhiều dạng. một hình thức là một cuộc gọi phương thức. Ví dụ: gọi phương thức >>> y = x
>>> id [y]
2253221094088
10 trong danh sáchHãy lấy danh sách của chúng ta từ trước đó cả
>>> y = x
>>> id [y]
2253221094088
1 và >>> y = x
>>> id [y]
2253221094088
5 đều trỏ đến>>> y = x
>>> id [y]
2253221094088
1Và chúng ta sẽ gọi phương thức
>>> y = x
>>> id [y]
2253221094088
10 trên biến >>> y = x
>>> id [y]
2253221094088
1 để thêm một mục mới vào danh sách của chúng ta>>> y = x
>>> id [y]
2253221094088
7Hãy nhớ rằng cả
>>> y = x
>>> id [y]
2253221094088
5 và >>> y = x
>>> id [y]
2253221094088
1 đều trỏ đến cùng một đối tượng, vì vậy nếu chúng ta nhìn vào >>> y = x
>>> id [y]
2253221094088
5 thì dường như nó cũng đã thay đổiLưu ý rằng chúng tôi đã không thực sự "thay đổi"
>>> y = x
>>> id [y]
2253221094088
1 hoặc >>> y = x
>>> id [y]
2253221094088
5 bởi vì >>> y = x
>>> id [y]
2253221094088
4 của hai biến này giống như trước đây>>> y = x
>>> id [y]
2253221094088
4Thay vào đó, chúng tôi đã thay đổi đối tượng mà hai biến này đang trỏ đến
Bản tóm tắt
Tóm lại, nếu chúng ta có hai biến
>>> y = x
>>> id [y]
2253221094088
1 và >>> y = x
>>> id [y]
2253221094088
5 và cả hai đều trỏ đến cùng một đối tượng trong bộ nhớ>>> y = x
>>> id [y]
2253221094088
7Nếu sau đó chúng tôi đã gán lại
>>> y = x
>>> id [y]
2253221094088
1 cho một danh sách mới>>> y = x
>>> id [y]
2253221094088
9Tôi đã hoàn thành một nhiệm vụ có nghĩa là tôi đã thay đổi đối tượng mà biến
>>> y = x
>>> id [y]
2253221094088
1 đang trỏ tớiBiến
>>> y = x
>>> id [y]
2253221094088
1 đã thay đổi ở đây nhưng >>> y = x
>>> id [y]
2253221094088
5 thì khôngBởi vì chúng tôi đã không chỉ
>>> y = x
>>> id [y]
2253221094088
5 bất cứ nơi nào mới. chúng tôi chỉ trỏ >>> y = x
>>> id [y]
2253221094088
1 đến một đối tượng mới, vì vậy >>> y = x
>>> id [y]
2253221094088
4 của nó đã thay đổi nhưng >>> y = x
>>> id [y]
2253221094088
4 của >>> y = x
>>> id [y]
2253221094088
5 vẫn giống như trước đây>>> y = x
>>> id [y]
2253221094088
8Nếu chúng ta trỏ
>>> y = x
>>> id [y]
2253221094088
1 và >>> y = x
>>> id [y]
2253221094088
5 trở lại cùng một đối tượng và sau đó gọi một phương thức trên đối tượng này để yêu cầu nó tự thay đổi