Hướng dẫn when does python copy or reference - khi nào python sao chép hoặc tham chiếu
Mã của tôi : Show
Tại sao Python: Mọi thứ được thông qua như tham khảo trừ khi được sao chép rõ ràng [điều này không đúng? ] Vui lòng giải thích .. Làm thế nào để Python quyết định tham khảo và sao chép?referencing and copying ? Cập nhật : Làm thế nào để làm?
Karl Knechtel 59.4K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu Đồng10 gold badges86 silver badges132 bronze badges Đã hỏi ngày 14 tháng 3 năm 2012 lúc 5:36Mar 14, 2012 at 5:36
Nam Tư Jindleyugal JindleYugal Jindle 42,8K42 Huy hiệu vàng127 Huy hiệu bạc195 Huy hiệu Đồng42 gold badges127 silver badges195 bronze badges 1 Effbot (còn gọi là Fredrik Lundh) đã mô tả phong cách vượt qua của Python là Call-by-object: http://effbot.org/zone/call-by-object.htm Các đối tượng được phân bổ trên đống và con trỏ cho chúng có thể được truyền xung quanh ở bất cứ đâu.
Hy vọng rằng làm rõ vấn đề cho bạn.
Jamylak 124K29 Huy hiệu vàng227 Huy hiệu bạc229 Huy hiệu Đồng29 gold badges227 silver badges229 bronze badges Đã trả lời ngày 14 tháng 3 năm 2012 lúc 7:08Mar 14, 2012 at 7:08
Raymond Hettingerraymond HettingerRaymond Hettinger 208K62 Huy hiệu vàng367 Huy hiệu bạc470 Huy hiệu đồng62 gold badges367 silver badges470 bronze badges 0 Mọi thứ trong Python đều được truyền và gán theo giá trị, giống như cách mà mọi thứ được truyền và được gán bởi giá trị trong Java. Mỗi giá trị trong Python là một tham chiếu (con trỏ) đến một đối tượng. Đối tượng không thể là giá trị. Bài tập luôn sao chép giá trị (là một con trỏ); Do đó, hai gợi ý như vậy có thể chỉ vào cùng một đối tượng. Các đối tượng không bao giờ được sao chép trừ khi bạn đang làm điều gì đó rõ ràng để sao chép chúng. Đối với trường hợp của bạn, mọi lần lặp của vòng lặp đều gán một phần tử của danh sách vào biến Đã trả lời ngày 14 tháng 3 năm 2012 lúc 19:30Mar 14, 2012 at 19:30
7 Nó không giúp ích gì trong Python để suy nghĩ về các tài liệu tham khảo hoặc giá trị. Không đúng. Trong Python, các biến chỉ là tên. Trong vòng lặp của bạn, 8 chỉ đơn giản là đặt lại tên loc vào một danh sách khác, để lại phiên bản gốc.
Nhưng vì trong ví dụ của bạn, mỗi phần tử là một danh sách, bạn thực sự có thể biến đổi yếu tố đó và điều đó sẽ được phản ánh trong danh sách ban đầu:
Đã trả lời ngày 14 tháng 3 năm 2012 lúc 5:42Mar 14, 2012 at 5:42
Daniel Rosemandaniel RosemanDaniel Roseman 577K62 Huy hiệu vàng844 Huy hiệu bạc858 Huy hiệu Đồng62 gold badges844 silver badges858 bronze badges 6 Khi bạn nói
Bạn đang sửa đổi biến Có lẽ bạn muốn
Để gán một lát (tình cờ là toàn bộ danh sách) của LỘC cho danh sách trống Đã trả lời ngày 14 tháng 3 năm 2012 lúc 5:40Mar 14, 2012 at 5:40
John La Rooyjohn La RooyJohn La Rooy Phù bằng vàng 287K5151 gold badges359 silver badges500 bronze badges 1 Mọi thứ được truyền qua đối tượng. Rebinding và đột biến là các hoạt động khác nhau.
Đã trả lời ngày 14 tháng 3 năm 2012 lúc 5:39Mar 14, 2012 at 5:39
Nó là. Hoặc ít nhất, theo cùng một nghĩa là mọi biến số khác trong Python là. Các biến Python là tên, không lưu trữ. 2, while locs is a name that refers to the entire structure.
Điều này không có nghĩa là "nhìn vào thứ mà 5". Nó không thể có nghĩa là, bởi vì các đối tượng Python không có khả năng như vậy.does not mean "look at the thing that loc names, and cause it to turn into 5". It cannot mean that, because Python objects are not capable of such a thing.Thay vào đó, nó có nghĩa là "Nguyên nhân 5". (Tất nhiên, điều đó có nghĩa là 5 cụ thể được cung cấp ở đó, vì nói chung có thể có một số đối tượng trong bộ nhớ giống nhau.)Đương nhiên, kết quả là nội dung của Đã trả lời ngày 14 tháng 3 năm 2012 lúc 7:14Mar 14, 2012 at 7:14
Karl Knechtelkarl KnechtelKarl Knechtel 59.4K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu đồng10 gold badges86 silver badges132 bronze badges Python là tham khảo hay sao chép?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ó trở lại theo giá trị hoặc tham chiếu không?Trong Python, các đối số luôn được truyền theo giá trị và các giá trị trả về luôn được trả về theo giá trị.Tuy nhiên, giá trị được trả về (hoặc thông qua) là một tham chiếu đến một đối tượng có khả năng được chia sẻ, có khả năng bị đột biến.return values are always returned by value. However, the value being returned (or passed) is a reference to a potentially shared, potentially mutable object.
Làm thế nào để python tham chiếu hoạt động?Một chương trình Python truy cập các giá trị dữ liệu thông qua các tài liệu tham khảo.Tham chiếu là một tên đề cập đến vị trí cụ thể trong bộ nhớ của một giá trị (đối tượng).Tài liệu tham khảo có dạng biến, thuộc tính và mục.Trong Python, một biến hoặc tham chiếu khác không có loại nội tại.A reference is a name that refers to the specific location in memory of a value (object). References take the form of variables, attributes, and items. In Python, a variable or other reference has no intrinsic type.
Mọi thứ có phải là một tài liệu tham khảo không?Mọi thứ được truyền theo giá trị, nhưng giá trị đó là một tham chiếu đến đối tượng gốc.Nếu bạn sửa đổi đối tượng, các thay đổi có thể hiển thị cho người gọi, nhưng bạn không thể chỉ định lại tên.Hơn nữa, nhiều đối tượng là bất biến (INT, phao, dây, bộ dữ liệu).. If you modify the object, the changes are visible for the caller, but you can't reassign names. Moreover, many objects are immutable (ints, floats, strings, tuples). |