Hướng dẫn can you pass by reference in python? - bạn có thể chuyển qua tham chiếu trong python không?
Đối số được thông qua bằng cách chuyển nhượng. Lý do đằng sau điều này là gấp đôi: Show
So:
Để làm cho nó rõ ràng hơn, hãy có một số ví dụ. Danh sách - một loại có thể thay đổiChúng ta hãy cố gắng sửa đổi danh sách đã được chuyển cho một phương thức:
Output:
Vì tham số được truyền vào là một tham chiếu đến Bây giờ chúng ta hãy xem những gì xảy ra khi chúng ta cố gắng thay đổi tham chiếu được truyền dưới dạng tham số:
Output:
Vì tham số Chuỗi - một loại bất biếnNó là bất biến, vì vậy chúng ta không thể làm gì để thay đổi nội dung của chuỗi Bây giờ, chúng ta hãy cố gắng thay đổi tham chiếu
Đầu ra:
Một lần nữa, vì tham số 4 được truyền theo giá trị, việc gán một chuỗi mới cho nó không có tác dụng mà mã bên ngoài phương thức có thể thấy. 4 là một bản sao của tài liệu tham khảo 6 và chúng tôi đã có 4 chỉ vào một chuỗi mới, nhưng không có cách nào để thay đổi khi 6 chỉ.Tôi hy vọng điều này làm rõ mọi thứ một chút. EDIT: Đã lưu ý rằng điều này không trả lời câu hỏi mà @David ban đầu hỏi, "Có điều gì tôi có thể làm để truyền biến bằng cách tham khảo thực tế không?". Hãy làm việc đó. It's been noted that this doesn't answer the question that @David originally asked, "Is there something I can do to pass the variable by actual reference?". Let's work on that. Làm thế nào để chúng ta có được xung quanh điều này?Như câu trả lời của @Andrea cho thấy, bạn có thể trả về giá trị mới. Điều này không thay đổi cách mọi thứ được truyền vào, nhưng cho phép bạn lấy thông tin bạn muốn trở lại:
Nếu bạn thực sự muốn tránh sử dụng giá trị trả về, bạn có thể tạo một lớp để giữ giá trị của mình và chuyển nó vào hàm hoặc sử dụng một lớp hiện có, như một danh sách:
Mặc dù điều này có vẻ hơi cồng kềnh. Có phải Python luôn vượt qua tham chiếu?Python luôn sử dụng các giá trị ngang qua.Không có ngoại lệ nào.Bất kỳ gán biến có nghĩa là sao chép giá trị tham chiếu.. There isn't any exception. Any variable assignment means copying the reference value.
Làm thế nào để bạn vượt qua một đối tượng bằng cách tham khảo trong Python?Python sử dụng một hệ thống, được gọi là Call Call by the Object tham khảo đối tượng hoặc cuộc gọi của người khác.Trong trường hợp bạn chuyển các đối số như toàn bộ số, chuỗi hoặc bộ dữ liệu cho một hàm, việc vượt qua giống như giá trị cuộc gọi vì bạn không thể thay đổi giá trị của các đối tượng bất biến được truyền đến hàm.Call by Object Reference” or “Call by assignment”. In the event that you pass arguments like whole numbers, strings or tuples to a function, the passing is like call-by-value because you can not change the value of the immutable objects being passed to the function.
Python có vượt qua số nguyên bằng cách tham khảo không?Trong Python, mọi thứ đều được truyền qua giá trị, nhưng nếu bạn muốn sửa đổi một số trạng thái, bạn có thể thay đổi giá trị của một số nguyên trong danh sách hoặc đối tượng được chuyển sang phương thức.everything is passed by value, but if you want to modify some state, you can change the value of an integer inside a list or object that's passed to a method.
Là danh sách trong Python được thông qua bởi tham chiếu hoặc giá trị?Nó được thông qua bởi giá trị của tham chiếu.passed by value of reference. |