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: –

Các đối tượng có thể thay đổi trong Python

Đố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: –

Đối tượng bất biến trong Python

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ự: –

Đối tượng bất biến trong Python

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' '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