Hướng dẫn what python object can be changed in place? - đối tượng python nào có thể được thay đổi tại chỗ?

Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn.

Vẫn chưa có tài khoản? Đăng ký tại đây.

Từ "thay đổi" là mơ hồ trong Python: chúng ta có hai loại "thay đổi" riêng biệt trong Python."change" is ambiguous in Python: we have two distinct types of "change" in Python.

Chúng ta có thể "thay đổi" một biến bằng cách thay đổi đối tượng mà biến đang chỉ vào. Chúng tôi làm điều đó thông qua một tuyên bố chuyển nhượng.

Chúng ta cũng có thể "thay đổi" một đối tượng thực tế thông qua một đột biến.

Chúng ta hãy xem cả hai loại thay đổi.

Bài tập

Hãy nói rằng chúng tôi có một biến

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 trỏ đến giá trị 4.

Chúng ta có thể sử dụng chức năng ID tích hợp để có được vị trí bộ nhớ của đối tượng Biến này

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 đang chỉ ra (mã định danh duy nhất này sẽ không bao giờ thay đổi trong vòng đời của một đối tượng):

>>> id(x)
140727864255408

Nếu chúng ta trỏ

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 vào một đối tượng mới, hãy nói một danh sách, đó là
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
5 sẽ thay đổi:

>>> x = [1, 2, 3]
>>> id(x)
2253221094088

Nếu chúng ta gán

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 cho
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2, điều này sẽ làm cho
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 trỏ đến cùng một vị trí bộ nhớ như
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2:

>>> y = x
>>> id (y)
2253221094088

Đây là loại thay đổi đầu tiên: gán. Chúng ta có thể thay đổi đối tượng nào một biến đang chỉ bằng cách thực hiện một bài tập.which object a variable is pointing to by doing an assignment.

Đột biến

Loại "thay đổi" thứ hai là đột biến. Chuyển đổi thay đổi biến, nhưng đột biến thay đổi đối tượng.mutation. Assignment changes variables, but mutation changes objects.

Hầu hết các đối tượng Python có thể được thay đổi sau khi chúng được tạo. Danh sách, bộ và từ điển đều có thể được thay đổi, trong khi các bộ dữ liệu, số và chuỗi không thể. Các đối tượng có thể được thay đổi được gọi là có thể thay đổi và hành động thay đổi một trong những đối tượng này là một đột biến.mutable and the act of changing one of these objects is a mutation.

Bài tập khá nhiều luôn liên quan đến một dấu hiệu

>>> y = x
>>> id (y)
2253221094088
0, trong khi đột biến có thể có rất nhiều hình thức: một hình thức là một cuộc gọi phương thức. Ví dụ: gọi phương thức
>>> y = x
>>> id (y)
2253221094088
1 trong danh sách.

Hãy lấy danh sách của chúng tôi từ trước đó cả

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 và
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 chỉ đến:

>>> x
[1, 2, 3]
>>> y
[1, 2, 3]
>>> id(x)
2253221094088
>>> id (y)
2253221094088

Và chúng tôi sẽ gọi phương thức

>>> y = x
>>> id (y)
2253221094088
1 trên biến
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 để thêm một mục mới vào danh sách của chúng tôi:

>>> x.append(4)
>>> x
[1, 2, 3, 4]

Hãy nhớ rằng cả

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 và
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 đều chỉ vào cùng một đối tượng, vì vậy nếu chúng ta nhìn vào
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6, nó dường như cũng sẽ thay đổi:

Lưu ý rằng chúng tôi đã không thực sự "thay đổi"

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 hoặc
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 vì
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
5 của hai biến này giống như trước đây:

>>> id(x)
2253221094088
>>> id (y)
2253221094088

Thay vào đó, chúng tôi đã thay đổi đối tượng mà hai biến này đang chỉ ra.

Bản tóm tắt

Để tóm tắt lại, nếu chúng ta có hai biến

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 và
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 và cả hai đều chỉ vào cùng một đối tượng trong bộ nhớ:

>>> x
[1, 2, 3, 4]
>>> y
[1, 2, 3, 4]
>>> id(x)
2253221094088
>>> id (y)
2253221094088

Nếu chúng tôi sau đó đã chỉ định lại

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 vào một danh sách mới:

>>> x = [4, 5, 6]
>>> x
[4, 5, 6]

Tôi đã thực hiện một bài tập có nghĩa là tôi đã thay đổi đối tượng nào biến

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 đang chỉ.assignment which means I've changed which object the variable
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 is pointing to.

Biến

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 đã thay đổi ở đây nhưng
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 không:

Bởi vì chúng tôi đã không chỉ

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 bất cứ nơi nào mới: chúng tôi chỉ chỉ
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 vào một đối tượng mới, do đó
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
5 đã thay đổi nhưng
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
5 của
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 giống như trước đây:

>>> id(x)
2253221617032
>>> id(y)
2253221094088

Nếu chúng ta trỏ

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 và
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 trở lại cùng một đối tượng và sau đó gọi một phương thức trên đối tượng này để yêu cầu nó tự đột biến:

>>> x = y
>>> x
[1, 2, 3, 4]
>>> x.pop()
4

Cả

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
2 và
>>> x = [1, 2, 3]
>>> id(x)
2253221094088
6 sẽ phản ánh sự thay đổi này:

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
0

Bởi vì hai biến này trỏ đến cùng một đối tượng:these two variables point to the same object:

>>> x = [1, 2, 3]
>>> id(x)
2253221094088
1

Vì vậy, hai loại thay đổi trong Python là:

  1. Nhiệm vụ, thay đổi đối tượng mà một biến chỉ ra, which changes which object a variable points to
  2. Đột biến, thay đổi chính một đối tượng (sẽ xuất hiện để thay đổi mọi biến chỉ vào đối tượng đó), which changes an object itself (that will appear to change every variable that points to that object)

Loại đối tượng có thể thay đổi trong Python không?

Hầu hết các đối tượng Python có thể được thay đổi sau khi chúng được tạo. Danh sách, bộ và từ điển đều có thể được thay đổi, trong khi các bộ dữ liệu, số và chuỗi không thể. Các đối tượng có thể được thay đổi được gọi là có thể thay đổi và hành động thay đổi một trong những đối tượng này là một đột biến.. Lists, sets, and dictionaries can all be changed, whereas tuples, numbers, and strings cannot. Objects that can be changed are called mutable and the act of changing one of these objects is a mutation.

Điều gì không thể thay đổi trong Python?

Các chuỗi Python là "bất biến", điều đó có nghĩa là chúng không thể thay đổi sau khi chúng được tạo ra (chuỗi Java cũng sử dụng phong cách bất biến này).Vì các chuỗi không thể thay đổi, chúng tôi xây dựng các chuỗi * mới * khi chúng tôi đi để biểu diễn các giá trị được tính toán. (Java strings also use this immutable style). Since strings can't be changed, we construct *new* strings as we go to represent computed values.

Một biến trong Python có thể được thay đổi không?

Một số giá trị trong Python có thể được sửa đổi, và một số không thể.Điều này không bao giờ có nghĩa là chúng ta không thể thay đổi giá trị của một biến - nhưng nếu một biến chứa một giá trị của một loại bất biến, chúng ta chỉ có thể gán cho nó một giá trị mới.Chúng ta không thể thay đổi giá trị hiện có theo bất kỳ cách nào.. This does not ever mean that we can't change the value of a variable – but if a variable contains a value of an immutable type, we can only assign it a new value. We cannot alter the existing value in any way.

Giá trị của một số đối tượng có thể thay đổi trong Python không?

Giá trị của một số đối tượng có thể thay đổi.Các đối tượng có giá trị có thể thay đổi được cho là có thể thay đổi;Các đối tượng có giá trị không thể thay đổi một khi chúng được tạo ra được gọi là bất biến.. Objects whose value can change are said to be mutable; objects whose value is unchangeable once they are created are called immutable.