Đây là ngày thứ hai của tôi học python (tôi biết kiến thức cơ bản về C ++ và một số OOP.) Và tôi có một số nhầm lẫn nhỏ về các biến trong python.
Đây là cách tôi hiểu chúng hiện tại:
Các biến trong Python là các tham chiếu (hoặc con trỏ?) Đến các đối tượng (có thể thay đổi hoặc bất biến). Khi chúng ta có một cái gì đó giống như num = 5
, đối tượng không thay đổi 5
được tạo ở đâu đó trong bộ nhớ và cặp tham chiếu tên-đối tượng num
được tạo trong một không gian tên nhất định. Khi chúng ta có a = num
, không có gì đang được sao chép, nhưng bây giờ cả hai biến đều tham chiếu đến cùng một đối tượng và a
được thêm vào cùng một không gian tên.
Đây là nơi cuốn sách của tôi, Tự động hóa những thứ nhàm chán với Python , khiến tôi bối rối. Vì là sách dành cho người mới nên nó không đề cập đến các đối tượng, không gian tên, v.v. và cố gắng giải thích đoạn mã sau:
>>> spam = 42
>>> cheese = spam
>>> spam = 100
>>> spam
100
>>> cheese
42
Lời giải thích mà nó đưa ra hoàn toàn giống với lời giải thích của một cuốn sách C ++, điều mà tôi không hài lòng khi chúng ta đang xử lý các tham chiếu / con trỏ tới các đối tượng. Vì vậy, trong trường hợp này, tôi đoán rằng ở dòng thứ 3, vì các số nguyên là bất biến, spam
đang được gán một con trỏ / tham chiếu hoàn toàn mới đến một vị trí khác trong bộ nhớ, tức là bộ nhớ mà ban đầu nó trỏ đến không được sửa đổi. Do đó, chúng tôi đã cheese
tham chiếu đến đối tượng ban đầu được tham chiếu bởi spam
. Đây có phải là lời giải thích chính xác?