Có con trỏ trong python không?

Biến

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
1 bằng với biến
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
2 tại thời điểm này,
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
1 và
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
2 cũng có cùng
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
5, nghĩa là cả hai đều trỏ đến cùng một vị trí bộ nhớ

>>> id[x]
140043174674888
>>> id[y]
140043174674888

Thay đổi một đối tượng mà 2 biến trỏ tới

Khi hai biến có cùng

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
5, cả hai biến đó đều trỏ đến cùng một đối tượng. Vì vậy, nếu chúng ta thay đổi đối tượng mà
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
1 trỏ tới [bằng cách nối thêm vào danh sách đó] thì giờ đây
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
1 sẽ có
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
3 nhưng
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
2 cũng vậy

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]

Lý do điều này xảy ra là tất cả về dòng mà chúng tôi đã viết ở trên

Bài tập không sao chép bất cứ thứ gì

Câu lệnh gán không bao giờ sao chép bất cứ thứ gì trong Python. Bài tập lấy một tên biến và trỏ chúng đến một đối tượng

Các biến không phải là thùng;

Khi tôi nói các biến là con trỏ, ý tôi là chúng không phải là thùng chứa các thứ

Khi bạn thực hiện một bài tập, bạn đang chỉ tên biến ở phía bên trái của dấu bằng [trong trường hợp này là ____12] cho bất kỳ đối tượng nào được tham chiếu ở phía bên phải của dấu bằng [danh sách mà ____11 đã có

Bản tóm tắt. Trong hướng dẫn này, chúng ta sẽ tìm hiểu con trỏ trong Python là gì, chúng hoạt động như thế nào và chúng có tồn tại trong Python không?

Con trỏ là gì?

Con trỏ trong ngữ cảnh của các ngôn ngữ cấp cao như C++ hoặc Java không là gì ngoài các biến lưu trữ địa chỉ bộ nhớ của các biến hoặc đối tượng khác

Chúng ta có thể tham chiếu một biến khác được lưu trữ ở một vị trí bộ nhớ khác bằng con trỏ trong các ngôn ngữ lập trình cấp cao

Không giống như biến, con trỏ xử lý địa chỉ hơn là giá trị

Python có con trỏ không?

Đáng buồn thay, Python không có con trỏ như các ngôn ngữ khác để sử dụng rõ ràng nhưng được triển khai ngầm

Các loại như danh sách, từ điển, lớp và đối tượng, v.v. trong Python hoạt động giống như các con trỏ dưới mui xe

Toán tử gán

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
2 trong Python tự động tạo và gán một con trỏ cho biến

Thí dụ

l = [1,2,3,4]

Câu lệnh trên tạo một đối tượng danh sách và trỏ một con trỏ tới nó có tên là “l”

Nếu bạn gán cùng một đối tượng danh sách cho hai biến khác nhau m và l, chúng sẽ trỏ đến cùng một vị trí bộ nhớ

#Assign
l = [1,2,3,4]
m = l
#Modify only m
m[0] = 9
#changes reflected by both m and l
print["m =", m]
print["l =", l]

đầu ra

Để đảm bảo rằng m và l đang trỏ đến cùng một đối tượng, hãy sử dụng toán tử

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
3

>>> l = [1,2,3,4]
>>> m = l
>>> print[m is l]
True

Toán tử “is” trong Python hoạt động khác với toán tử “==”. Toán tử “==” trong Python trả về so sánh nội dung của đối tượng trong khi toán tử is so sánh tham chiếu của đối tượng

Ngoài ra, điều quan trọng cần lưu ý là python chỉ xóa một đối tượng khi tất cả các con trỏ tới đối tượng bị xóa

Sử dụng

>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
4 hoặc
>>> x.append[4]
>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
5 sẽ chỉ xóa biến chứ không xóa đối tượng cơ bản mà nó đang tham chiếu

Python sẽ vẫn giữ đối tượng trong bộ nhớ cho đến khi tất cả các con trỏ trỏ tới đối tượng danh sách bị xóa

Số và chuỗi cũng là Con trỏ phải không?

Câu trả lời là không. Các loại đơn giản như ________ 26, ________ 27, ________ 40, _______ 41, v.v. không hoạt động như một con trỏ

Hãy xem xét đoạn mã python sau

________số 8

đầu ra

Như chúng ta có thể thấy, việc thay đổi giá trị của “a” không làm thay đổi “b”. Do đó, không giống như một danh sách, giá trị của các biến số nguyên

#Assign
l = [1,2,3,4]
m = l
#Modify only m
m[0] = 9
#changes reflected by both m and l
print["m =", m]
print["l =", l]
2 và
#Assign
l = [1,2,3,4]
m = l
#Modify only m
m[0] = 9
#changes reflected by both m and l
print["m =", m]
print["l =", l]
3 được lưu trữ trong các địa chỉ hoặc vị trí bộ nhớ khác nhau

Trên một lưu ý cuối cùng, chúng tôi kết luận rằng Python không có con trỏ nhưng hành vi của con trỏ được triển khai dưới mui xe bởi python cho một số loại và đối tượng

Con trỏ có sẵn trong Python không?

Con trỏ có xu hướng tạo ra sự phức tạp trong mã, trong đó Python chủ yếu tập trung vào khả năng sử dụng hơn là tốc độ. Kết quả là Python không hỗ trợ con trỏ . Tuy nhiên, Python mang lại một số lợi ích khi sử dụng con trỏ. Trước khi tìm hiểu về con trỏ trong Python, chúng ta cần có khái niệm cơ bản về những điểm sau.

Con trỏ trong Python là gì?

Con trỏ về cơ bản là biến chứa địa chỉ bộ nhớ của biến khác . Chúng cho phép bạn tạo hiệu quả cao trong các phần mã của mình nhưng có thể dẫn đến nhiều lỗi quản lý bộ nhớ khác nhau. Bạn sẽ tìm hiểu về mô hình đối tượng của Python và xem tại sao con trỏ trong Python không thực sự tồn tại.

Ngôn ngữ nào có con trỏ?

Con trỏ được sử dụng chủ yếu trong ngôn ngữ C & C++ .

Tại sao con trỏ không được sử dụng trong Java và Python?

Vì vậy, tổng thể Java không có con trỏ [theo nghĩa C/C++] bởi vì nó không cần chúng cho lập trình OOP mục đích chung. Furthermore, adding pointers to Java would undermine security and robustness and make the language more complex.

Chủ Đề