Trong python mọi thứ diễn ra bằng cách tham khảo
Trong Python, tất cả mọi thứ là một tài liệu tham khảo, và các tài liệu tham khảo được truyền theo giá trị.
Nếu bạn muốn sử dụng các cụm từ đó. Nhưng những thuật ngữ đó làm cho mọi thứ khó hiểu hơn.
Đơn giản hơn nhiều: trong Python, biến là tên của đối tượng. =
được sử dụng để thay đổi tên đối tượng đề cập đến. Phía bên trái có thể tham chiếu đến một phần của đối tượng hiện có, trong trường hợp đó toàn bộ đối tượng được thay đổi bằng cách thay thế phần đó. Điều này là do đối tượng, lần lượt, không thực sự chứa các phần của nó, nhưng thay vào đó có chứa nhiều tên hơn, có thể được gây ra để bắt đầu đề cập đến những thứ khác nhau.
khi nào đối tượng mới được tạo?
Đối tượng được tạo khi chúng được tạo (bằng cách sử dụng hàm tạo lớp hoặc trong trường hợp các kiểu dựng sẵn có đại diện bằng chữ, bằng cách nhập một chữ). Tôi không hiểu làm thế nào điều này có liên quan đến phần còn lại của câu hỏi của bạn.
m = m[1:] # m changes its reference to the new sliced list
Vâng, tất nhiên. Bây giờ m
là kết quả của việc đánh giá m[1:]
.
edits m but not d (I wanted to change d)
Vâng, tất nhiên. Tại sao sẽ nó thay đổi d
? Đó không phải là một loại phép thuật nào đó, nó đơn giản là kết quả của việc đánh giá d['m']
. Chính xác điều tương tự cũng xảy ra trên cả hai dòng.
Hãy xem xét một ví dụ đơn giản hơn.
m = 1
m = 2
Điều này có gây ra 1
để trở thành 2
? Tất nhiên là không rồi. Số nguyên là không thay đổi. Nhưng cùng một điều đang xảy ra: m
được gây ra để đặt tên một điều, và sau đó đặt tên cho một điều khác.
Hoặc, một cách khác: nếu "tham chiếu" đã hoạt động theo cách bạn mong đợi, thì dòng m = m[1:]
sẽ đệ quy. Bạn đang mong đợi nó có nghĩa là "bất cứ nơi nào bạn nhìn thấy m
, đối xử với nó như thể nó có nghĩa là m[1:]
". Vâng, trong trường hợp đó, m[1:]
thực sự có nghĩa là m[1:][1:]
, điều này có nghĩa là m[1:][1:][1:]
, v.v.
Nếu bạn là người học trực quan, [đây] (http://people.csail.mit.edu/pgbovine/python /) một hướng dẫn tốt – forivall
Nhận xét vô cùng hữu ích Mr. @jordoex - Nghiêm túc Tuyệt vời! –