Các đối tượng có thể thay đổi và bất biến trong Python {VÍ DỤ}
Đối tượng có thể thay đổi là gì?
Có thể thay đổi trong Python có thể được định nghĩa là đối tượng có thể thay đổi hoặc được coi là thứ gì đó có thể thay đổi về bản chất. Có thể thay đổi có nghĩa là khả năng sửa đổi hoặc chỉnh sửa một giá trị.
Các đối tượng có thể thay đổi trong Python cho phép các lập trình viên có các đối tượng có thể thay đổi giá trị của chúng. Chúng thường được sử dụng để lưu trữ một bộ sưu tập dữ liệu. Nó có thể được coi là một thứ gì đó đã biến đổi và trạng thái bên trong áp dụng trong một đối tượng đã thay đổi.
Đối tượng bất biến là gì?
Đối tượng bất biến trong Python có thể được định nghĩa là các đối tượng không thay đổi giá trị và thuộc tính của chúng theo thời gian.
Các đối tượng này trở thành vĩnh viễn sau khi được tạo và khởi tạo và chúng tạo thành một phần quan trọng của cấu trúc dữ liệu được sử dụng trong Python.
Python được sử dụng trong số, bộ dữ liệu, chuỗi, tập hợp cố định và các lớp do người dùng định nghĩa với một số ngoại lệ. Chúng không thể thay đổi và các giá trị của chúng vẫn tồn tại vĩnh viễn sau khi chúng được khởi tạo và do đó được gọi là bất biến.
In Python, mọi thứ đều là một đối tượng
Trong tạp chí Python ngôn ngữ lập trình, mọi thứ có thể được coi là một đối tượng bao gồm các danh sách, số nguyên và hàm. Tính năng này có thể được so sánh với các ngôn ngữ lập trình khác có hỗ trợ đối tượng.
Tính năng này có thể được xác minh bằng cách sử dụng Python trình thông dịch như hình dưới đây: –
Python mã:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Đầu ra:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
Hơn nữa, Python cung cấp một hàm dựng sẵn có tên id trả về địa chỉ của đối tượng hiện có trong bộ nhớ của Python ngôn ngữ lập trình.
Python mã:
z=200 id(z) print("The id of object is", id(z))
Đầu ra:
the id of object is 9795360
Trong đoạn mã trên, hàm id có cú pháp là id(obj) cung cấp địa chỉ của obj trong Python ký ức. Ở đây, có một đối tượng tên là z và nó có giá trị gán là 200. Sau đó, đối tượng z được chuyển vào hàm id dưới dạng id(z) và Python cung cấp địa chỉ của đối tượng là 9795360.
Các đối tượng có thể thay đổi trong Python
Trong một đối tượng có thể thay đổi, giá trị của đối tượng thay đổi theo một khoảng thời gian.
Trong ví dụ này, chúng tôi đã giải thích các đối tượng có thể thay đổi trong Pythonvà điều này sử dụng danh sách như một ứng dụng của các đối tượng có thể thay đổi như dưới đây: –
Python Mã Code:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
Đầu ra:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
Như chúng ta có thể thấy trong ví dụ trên, danh sách có thể thay đổi trong Python có giá trị 1,2,3. Phần tử đầu tiên của danh sách có thể thay đổi được thay đổi từ 1 thành Guru99 và nó không tạo đối tượng mới khi giá trị mới được khởi tạo.
Ở đây chúng ta có thể sử dụng phương thức id để sử dụng nó. Sau đây minh họa cách sử dụng phương thức id cho các đối tượng có thể thay đổi như được hiển thị bên dưới: –
Python Mã Code:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
Đầu ra
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
Hình sau minh họa đối tượng có thể thay đổi trong Python như hình dưới đây: –
Đối tượng bất biến trong Python
Đối tượng bất biến trong Python là các đối tượng trong đó các trường hợp không thay đổi theo thời gian. Các phiên bản bất biến của một loại cụ thể, sau khi được tạo, sẽ không thay đổi và điều này có thể được xác minh bằng phương thức id của Python.
Chúng ta hãy lấy một ví dụ về các đối tượng kiểu số nguyên trong Python minh họa khái niệm về các đối tượng bất biến trong Python như hình dưới đây: –
Python Mã Code:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
Đầu ra
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
Có thể thấy ở trên rằng có sự thay đổi trong “a.” Hãy cùng tìm hiểu cơ chế hoạt động như thế nào nhé:
- Không có thay đổi nào về giá trị của đối tượng khi khởi tạo “a” bằng 344.
- Thay vào đó, một đối tượng mới được tạo và được giới hạn bằng “a”.
- Đối tượng khác được gán là 244 sẽ không thể truy cập được nữa.
- Ví dụ trên sử dụng một đối tượng số nguyên.
Tại a=244, một đối tượng mới được tạo và tham chiếu đến “a” như dưới đây: –
Bài đăng sử dụng a=344, có một đối tượng mới được tham chiếu bằng “a”. Sơ đồ sau đây thể hiện điều tương tự: –
Do đó, bất cứ khi nào có sự gán một giá trị mới cho tên của kiểu int, sẽ có sự thay đổi trong liên kết tên với đối tượng khác. Nguyên tắc tương tự phù hợp với các bộ dữ liệu, dây, float và Boolean do đó được gọi là bất biến.
Ý nghĩa của các khóa từ điển trong Python
Từ điển có thể được định nghĩa là các bộ sưu tập được sắp xếp lưu trữ dữ liệu ở định dạng chính và không cho phép trùng lặp. Từ điển chứa một khóa có cặp giá trị tương ứng được căn chỉnh theo nó. Chúng có thể thay đổi về loại và nội dung của chúng có thể được thay đổi ngay cả sau khi khởi tạo và tạo.
Tại bất kỳ thời điểm nào, khóa sẽ chỉ đến một yếu tố cụ thể tại một thời điểm. Chìa khóa của từ điển là bất biến.
Chúng ta hãy lấy một kịch bản giả định như dưới đây: –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Đầu ra: – Ở trên Python mã không mang lại bất kỳ đầu ra nào và thay vào đó, nó tạo ra lỗi loại không thể băm được. Đây là một tình huống giả định và không được sử dụng trong Python trình biên dịch.
Ở đây, a
được định nghĩa là [4,6] và trong từ điển, nó được định nghĩa là x. Đây, b
được định nghĩa là [5,6,7] và trong từ điển, nó được định nghĩa là y.
- Khóa 'a' có giá trị [4,6] và được khởi tạo thêm thành x.
- Khóa 'b' có giá trị [5,6,7] được khởi tạo thêm thành 'y' trong từ điển.
- Bây giờ giả sử rằng giá trị của 'một ' được gắn thêm 5 và 7, đây là chìa khóa cho từ điển.
- Sau đó, từ điển đã bị thay đổi và nó sẽ cung cấp cho cả hai 'x' và 'y' làm giá trị cho từ điển trên.
Hãy xem xét tình huống sau đây được minh họa ở trên: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
Vì vậy, với tư cách là một ngôn ngữ lập trình, Python làm cho khóa của từ điển trở thành bất biến và từ điển là kiểu dữ liệu bất biến.
Ngoại lệ trong tính bất biến
Tuy vậy, Python cung cấp các ngoại lệ cho tính bất biến, những ngoại lệ như vậy có thể được quan sát đối với loại đối tượng tuple. Một tuple có thể là sự kết hợp của các loại đối tượng có thể thay đổi và không thể thay đổi. Chúng ta hãy lấy một ví dụ để giải thích các trường hợp ngoại lệ về tính bất biến như dưới đây: –
Python Mã Code:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
Đầu ra:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
Bạn có thể thấy trong đoạn mã trên, phần tử đầu tiên, là một danh sách, có thể thay đổi được, trong khi bộ dữ liệu là bất biến. Giá trị của bộ dữ liệu không thể thay đổi được, nhưng nội dung của danh sách có trong bộ dữ liệu có thể thay đổi giá trị của nó.
Do đó, điều này đặt ra một ngoại lệ là các đối tượng bất biến không thay đổi giá trị của chúng, nhưng giá trị của các thành phần sẽ thay đổi giá trị của chúng.
Đối tượng có thể thay đổi và không thể thay đổi
Dưới đây là những khác biệt chính giữa các đối tượng có thể thay đổi và không thể thay đổi:
Đối tượng có thể thay đổi | Đối tượng bất biến |
---|---|
Trạng thái đối tượng có thể được thay đổi sau khi được tạo | Trạng thái đối tượng không thể thay đổi sau khi được tạo |
Các đối tượng có thể thay đổi về bản chất không được coi là an toàn cho luồng. | Các đối tượng bất biến được coi là có tính chất an toàn theo luồng. |
Các đối tượng có thể thay đổi không được tạo thành cuối cùng và do đó người lập trình có thể tiếp tục thay đổi các đối tượng có thể thay đổi và sử dụng các đối tượng tương tự. | Điều quan trọng là làm cho các lớp cuối cùng khi có sự tạo ra đối tượng bất biến |
Python Các kiểu dữ liệu bất biến
Lớp | Giải thích | Bất biến hay không |
---|---|---|
bool | Giá trị boolean | bất biến |
Int | Giá trị nguyên (độ lớn có thể tùy ý) | bất biến |
Phao | Số điểm nổi | bất biến |
Danh sách | Trình tự các đối tượng có tính chất có thể thay đổi | Có thể thay đổi |
Bộ dữ liệu | Trình tự các đối tượng có tính chất bất biến | bất biến |
str | Chuỗi ký tự | bất biến |
Thiết lập | tập hợp các đối tượng riêng biệt có tính chất không có thứ tự | Có thể thay đổi |
băng giá | Đặt lớp có tính chất bất biến | bất biến |
chính tả | Ánh xạ từ điển hoặc kết hợp | Có thể thay đổi |