Hướng dẫn can you modify a variable in python? - bạn có thể sửa đổi một biến trong python không?
Lỗi bạn nhận được khi bạn cố gắng chạy mã của mình là: Show
Mà, trên mặt của nó, có vẻ lạ: sau tất cả, câu lệnh đầu tiên trong mã trên ( 7) là một nhiệm vụ. Vì vậy những gì đang xảy ra?Trên thực tế, có hai điều riêng biệt xảy ra, và cả hai đều không rõ ràng trừ khi bạn đã biết về chúng. Trước hết, bạn thực sự có hai biến khác nhau:
Hai biến này hoàn toàn không liên quan đến nhau, mặc dù chúng có cùng tên. Một biến là cục bộ cho một hàm nếu có một câu lệnh gán cho nó bên trong hàm đó - ví dụ: dòng 1 của bạn.Mặc dù vậy, lỗi vẫn trông lạ - sau tất cả, điều đầu tiên bạn làm trong 0 được gán cho 8, vậy làm thế nào nó có thể được tham chiếu trước?Câu trả lời là, trong một tuyên bố gán, Python đánh giá mọi thứ ở phía bên phải của dấu hiệu 4 trước khi gán nó cho tên ở phía bên trái - vì vậy mặc dù bài tập được viết đầu tiên trong mã của bạn, 8 được tham chiếu trước Ở phía bên phải đó: 6.Có hai cách bạn có thể có được xung quanh này. Đầu tiên là nói với Python rằng bạn thực sự muốn 8 bên trong 0 giống nhau 8 trong phạm vi toàn cầu:
Điều này sẽ hoạt động, nhưng đó là một cách khá tệ để viết các chương trình. Việc thay đổi các biến toàn cầu bên trong các chức năng khó quản lý thực sự nhanh chóng, bởi vì bạn thường có nhiều chức năng và không ai trong số chúng có thể chắc chắn rằng một trong số đó không gây rối với biến toàn cầu theo một cách nào đó mà họ không mong đợi. Một cách tốt hơn là chuyển các biến làm đối số cho các hàm, như thế này:
Lưu ý rằng tên không phải giống nhau - định nghĩa mới của bạn về 0 chỉ nói rằng nó chấp nhận một giá trị, và sau đó làm điều gì đó với nó. Bạn có thể vượt qua bất cứ thứ gì bạn thích - nó có thể là 8 hoặc số 2 hoặc thứ gì đó khác. Trên thực tế, mã của bạn sẽ luôn dễ hiểu hơn nếu bạn cố gắng tránh có các biến có cùng tên trong các phạm vi khác nhau.Nếu bạn chơi với mã ở trên, bạn sẽ nhận thấy điều gì đó thú vị:
Mạnh 8 không thay đổi! Đó là bởi vì mặc dù bạn đã chuyển nó vào 0 và nó được gán cho 5, nhưng sau đó 5 đã thay đổi, chỉ để lại 8 ban đầu.Nếu bạn muốn thực sự thay đổi 8, bạn cần trả lại 5 đã sửa đổi của mình từ chức năng, sau đó chỉ định lại nó trở lại 8 ở bên ngoài:
Đă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ậpHãy nói rằng chúng tôi có một biến 5 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 5 đ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):
Nếu chúng ta trỏ 5 vào một đối tượng mới, hãy nói một danh sách, đó là 4 sẽ thay đổi:
Nếu chúng ta gán 5 cho 5, điều này sẽ làm cho 5 trỏ đến cùng một vị trí bộ nhớ như 5:
Đâ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ếnLoạ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 4, 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 0 trong danh sách.Hãy lấy danh sách của chúng tôi từ trước đó cả 5 và 5 chỉ đến:
Và chúng tôi sẽ gọi phương thức 0 trên biến 5 để thêm một mục mới vào danh sách của chúng tôi:
Hãy nhớ rằng cả 5 và 5 đều chỉ vào cùng một đối tượng, vì vậy nếu chúng ta nhìn vào 5, nó dường như cũng sẽ thay đổi:Lưu ý rằng chúng tôi đã không thực sự "thay đổi" 5 hoặc 5 vì 4 của hai biến này giống như trước đây: 0Thay 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 5 và 5 và cả hai đều chỉ vào cùng một đối tượng trong bộ nhớ: 1Nếu chúng tôi sau đó đã chỉ định lại 5 vào một danh sách mới: 2Tô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 5 đang chỉ.assignment which means I've changed which object the variable 5 is pointing to.Biến 5 đã thay đổi ở đây nhưng 5 không có:Bởi vì chúng tôi đã không chỉ 5 bất cứ nơi nào mới: chúng tôi chỉ chỉ 5 vào một đối tượng mới, vì vậy 4 của nó đã thay đổi nhưng 4 của 5 giống như trước đây: 3Nếu chúng ta trỏ 5 và 5 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: 4Cả 5 và 5 sẽ phản ánh sự thay đổi này: 5Bởi vì hai biến này trỏ đến cùng một đối tượng:these two variables point to the same object: 6Vì vậy, hai loại thay đổi trong Python là:
Làm thế nào để bạn sửa đổi một giá trị biến trong Python?Nếu bạn cố gắng cập nhật một biến không tồn tại, bạn sẽ gặp lỗi vì Python đánh giá biểu thức ở phía bên phải của toán tử gán trước khi nó gán giá trị kết quả cho tên bên trái.Trước khi bạn có thể cập nhật một biến, bạn phải khởi tạo nó, thường là với một bài tập đơn giản.Before you can update a variable, you have to initialize it, usually with a simple assignment.
Làm thế nào để bạn sửa đổi tất cả các biến trong Python?Nếu bạn đang sử dụng python idle (GUI), bạn có thể ctrl + h và chọn thay thế tất cả.
Có thể thay đổi giá trị biến?Bạn cũng có thể thay đổi một giá trị biến bằng cách chọn biến và sau đó sửa đổi giá trị trong khung chi tiết..
Đ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. |