Hướng dẫn python reference copy - bản sao tham chiếu python

Nội dung chính ShowShow

Show
  • Tham khảo, sao chép và DeepCopy
  • Tham khảo
  • Bản sao nông
  • Sao chép sâu
  • Là Python Pass-By-Reference hay Pass-By-Agents?09 tháng 2 năm 2014Giả sử tôi nói với chất béo, hoặc Kevin nói với béo, bạn không trải nghiệm Chúa. Bạn chỉ đơn thuần trải nghiệm điều gì đó với những phẩm chất và khía cạnh, bản chất và sức mạnh và sự khôn ngoan và lòng tốt của Chúa. Điều này giống như trò đùa về tuyên bố của Đức đối với sự trừu tượng kép; Một cơ quan của Đức về văn học Anh tuyên bố, Ham Hamlet không được viết bởi Shakespeare; Nó chỉ được viết bởi một người đàn ông tên là Shakespeare. Trong tiếng Anh, sự khác biệt là bằng lời nói và không có ý nghĩa, mặc dù tiếng Đức là ngôn ngữ sẽ thể hiện sự khác biệt (chiếm một số tính năng kỳ lạ của tâm trí Đức).Valis, p71 (Phiên bản Creb-of-the-Tháng)Philip K. Dick không được biết đến với văn xuôi ánh sáng hoặc tiêu hóa. Đại đa số các nhân vật của anh ấy rất cao. Giống như, thực sự, thực sự, thực sự cao. Tuy nhiên, trong câu trích dẫn trên từ Valis (xuất bản năm 1981), ông đưa ra một lời giải thích có tầm nhìn đáng kể về mô hình Python bị hiểu lầm khét tiếng. Cộng với sự thay đổi ça, cộng với các loại thuốc Omnomnomnom nhất.Hai cách tiếp cận được biết đến rộng rãi và dễ hiểu nhất đối với tham số truyền qua các ngôn ngữ lập trình là từng tham chiếu và vượt qua. Thật không may, Python là người tham khảo theo từng đối tượng, trong đó thường được nói:Tài liệu tham khảo đối tượng được truyền qua giá trị.Khi tôi lần đầu tiên đọc định nghĩa tự mãn và quá thích, tôi muốn đấm một cái gì đó. Sau khi loại bỏ những mảnh vỡ của kính khỏi tay tôi và được hộ tống ra khỏi câu lạc bộ thoát y, tôi nhận ra rằng cả 3 mô hình có thể được hiểu theo cách chúng khiến 2 chức năng sau đây hoạt động:def reassign(list): list = [0, 1] def append(list): list.append(1) list = [0] reassign(list) append(list)Hãy để khám phá.Biến không phải là đối tượng
  • Pass-by-reference
  • Pass-by-value
  • Pass-by-object-reference
  • Liên kết hữu ích
  • Danh sách có được thông qua bởi tham chiếu không?
  • Python có trở lại theo giá trị hoặc tham chiếu không?
  • Python có vượt qua được giá trị và vượt qua không
  • Làm thế nào các danh sách được chuyển đến các chức năng Python?

Tham khảo, sao chép và DeepCopy

Tham khảo

Bản sao nông

a = [1, 2, 3]
b = a
b[2] = 11

print("list a:", a)
print("list b:", b)

Sao chép sâu

Là Python Pass-By-Reference hay Pass-By-Agents?09 tháng 2 năm 2014Giả sử tôi nói với chất béo, hoặc Kevin nói với béo, bạn không trải nghiệm Chúa. Bạn chỉ đơn thuần trải nghiệm điều gì đó với những phẩm chất và khía cạnh, bản chất và sức mạnh và sự khôn ngoan và lòng tốt của Chúa. Điều này giống như trò đùa về tuyên bố của Đức đối với sự trừu tượng kép; Một cơ quan của Đức về văn học Anh tuyên bố, Ham Hamlet không được viết bởi Shakespeare; Nó chỉ được viết bởi một người đàn ông tên là Shakespeare. Trong tiếng Anh, sự khác biệt là bằng lời nói và không có ý nghĩa, mặc dù tiếng Đức là ngôn ngữ sẽ thể hiện sự khác biệt (chiếm một số tính năng kỳ lạ của tâm trí Đức).Valis, p71 (Phiên bản Creb-of-the-Tháng)Philip K. Dick không được biết đến với văn xuôi ánh sáng hoặc tiêu hóa. Đại đa số các nhân vật của anh ấy rất cao. Giống như, thực sự, thực sự, thực sự cao. Tuy nhiên, trong câu trích dẫn trên từ Valis (xuất bản năm 1981), ông đưa ra một lời giải thích có tầm nhìn đáng kể về mô hình Python bị hiểu lầm khét tiếng. Cộng với sự thay đổi ça, cộng với các loại thuốc Omnomnomnom nhất.Hai cách tiếp cận được biết đến rộng rãi và dễ hiểu nhất đối với tham số truyền qua các ngôn ngữ lập trình là từng tham chiếu và vượt qua. Thật không may, Python là người tham khảo theo từng đối tượng, trong đó thường được nói:Tài liệu tham khảo đối tượng được truyền qua giá trị.Khi tôi lần đầu tiên đọc định nghĩa tự mãn và quá thích, tôi muốn đấm một cái gì đó. Sau khi loại bỏ những mảnh vỡ của kính khỏi tay tôi và được hộ tống ra khỏi câu lạc bộ thoát y, tôi nhận ra rằng cả 3 mô hình có thể được hiểu theo cách chúng khiến 2 chức năng sau đây hoạt động:def reassign(list): list = [0, 1] def append(list): list.append(1) list = [0] reassign(list) append(list)Hãy để khám phá.Biến không phải là đối tượng

Liên kết hữu ích

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

Danh sách có được thông qua bởi tham chiếu không?

Python có trở lại theo giá trị hoặc tham chiếu không?

Python có vượt qua được giá trị và vượt qua không

Làm thế nào các danh sách được chuyển đến các chức năng Python?

Xem xét trường hợp sau

Chúng tôi đã tạo một biến mới

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 và gán giá trị của danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 cho nó, sau khi sửa đổi giá trị trong danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5, kết quả của danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 và
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 là gì?

Xem xét trường hợp thứ hai:

Trong ví dụ này, Danh sách

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 được truyền dưới dạng đầu vào cho chức năng của chúng tôi và chúng tôi đã sửa đổi đầu vào bên trong hàm, điều gì sẽ xảy ra với
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6?

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

8

Trong cả hai ví dụ trên, bạn có thể đoán, kết quả của

Bản sao nông

Sao chép sâu

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

9

Là Python Pass-By-Reference hay Pass-By-Agents?09 tháng 2 năm 2014Giả sử tôi nói với chất béo, hoặc Kevin nói với béo, bạn không trải nghiệm Chúa. Bạn chỉ đơn thuần trải nghiệm điều gì đó với những phẩm chất và khía cạnh, bản chất và sức mạnh và sự khôn ngoan và lòng tốt của Chúa. Điều này giống như trò đùa về tuyên bố của Đức đối với sự trừu tượng kép; Một cơ quan của Đức về văn học Anh tuyên bố, Ham Hamlet không được viết bởi Shakespeare; Nó chỉ được viết bởi một người đàn ông tên là Shakespeare. Trong tiếng Anh, sự khác biệt là bằng lời nói và không có ý nghĩa, mặc dù tiếng Đức là ngôn ngữ sẽ thể hiện sự khác biệt (chiếm một số tính năng kỳ lạ của tâm trí Đức).Valis, p71 (Phiên bản Creb-of-the-Tháng)Philip K. Dick không được biết đến với văn xuôi ánh sáng hoặc tiêu hóa. Đại đa số các nhân vật của anh ấy rất cao. Giống như, thực sự, thực sự, thực sự cao. Tuy nhiên, trong câu trích dẫn trên từ Valis (xuất bản năm 1981), ông đưa ra một lời giải thích có tầm nhìn đáng kể về mô hình Python bị hiểu lầm khét tiếng. Cộng với sự thay đổi ça, cộng với các loại thuốc Omnomnomnom nhất.Hai cách tiếp cận được biết đến rộng rãi và dễ hiểu nhất đối với tham số truyền qua các ngôn ngữ lập trình là từng tham chiếu và vượt qua. Thật không may, Python là người tham khảo theo từng đối tượng, trong đó thường được nói:Tài liệu tham khảo đối tượng được truyền qua giá trị.Khi tôi lần đầu tiên đọc định nghĩa tự mãn và quá thích, tôi muốn đấm một cái gì đó. Sau khi loại bỏ những mảnh vỡ của kính khỏi tay tôi và được hộ tống ra khỏi câu lạc bộ thoát y, tôi nhận ra rằng cả 3 mô hình có thể được hiểu theo cách chúng khiến 2 chức năng sau đây hoạt động:def reassign(list): list = [0, 1] def append(list): list.append(1) list = [0] reassign(list) append(list)Hãy để khám phá.Biến không phải là đối tượng

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

0

Liên kết hữu ích

Danh sách có được thông qua bởi tham chiếu không?

Python có trở lại theo giá trị hoặc tham chiếu không?

Python có vượt qua được giá trị và vượt qua không

Làm thế nào các danh sách được chuyển đến các chức năng Python?

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5

Xem xét trường hợp sau

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6?
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

7

Chúng tôi đã tạo một biến mới

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 và gán giá trị của danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 cho nó, sau khi sửa đổi giá trị trong danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5, kết quả của danh sách
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 và
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 là gì?

Xem xét trường hợp thứ hai:

Trong ví dụ này, Danh sách

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 được truyền dưới dạng đầu vào cho chức năng của chúng tôi và chúng tôi đã sửa đổi đầu vào bên trong hàm, điều gì sẽ xảy ra với
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6?

Trong cả hai ví dụ trên, bạn có thể đoán, kết quả của

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 sẽ được sửa đổi một cách không có chủ đích.
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

0

Sao chép sâu

Một bản sao sâu sẽ sao chép đệ quy một đối tượng. Thay thế bản sao bằng bản sao sâu, bạn sẽ nhận được:

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

0

Kết quả là:

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

1

Ở đây các thay đổi được thực hiện trên

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 sẽ không ảnh hưởng đến biến ban đầu và địa chỉ của
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 và
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

5 sẽ hoàn toàn khác nhau.

Hãy xem xét x mã Sau, tho ì không, không, không, không,

Nội phân chính

  • Là Python Pass-By-Reference Hay Pass-By-Agents? Bạn chỉ Đơn THUầN TRảI NGHIệM ĐIềU GÌ Điều NÀY GIốNG NHư TRU ĐA Một Cơ Quan Của ĐứC Về Văn Học Anh Tuyên Bố, Ham Hamlet Không Đan Viết Bởi Shakespeare; Nó chỉ được viết bởi một người đàn oông tun là shakespeare. Tong tiếng ngr, sự Khán biệt là bằng lờ CREB-OF-THE-THÁNH) Philip K. Dick Không Đan Biết Đến Với Văn Xuôm Đại ĐA Số Các nhân Vật Của Anh ấy Rất CaO. Giống NHư, thực sự, thực sự, thực sự cao. Tuy NHiênn, trong câu trích dẫn trên từ valis (xuất bản nĂM 1981), Cộng với sự họ Đổi ça, cộng với các loại thul Thật, không, có thể, python là người tham Khảo Theo từng Đ ối tượng, trong um thường àc ar ộ Cái gì ĐÓ. R lOạI .
  • Pass-by-reference
  • Pass-by-value
  • Pass-by-object-reference
  • Liên kết hữu ích
  • Danh sách có được thông qua bởi tham chiếu không?
  • Python có trở lại theo giá trị hoặc tham chiếu không?
  • Python có vượt qua được giá trị và vượt qua không
  • Làm thế nào các danh sách được chuyển đến các chức năng Python?
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

2

Bất cứ ai có thể cho tôi biết những gì đang xảy ra?

Hỏi ngày 24 tháng 11 năm 2018 lúc 14:49Nov 24, 2018 at 14:49Nov 24, 2018 at 14:49Nov 24, 2018 at 14:49

16

Nó đã được thông qua bởi giá trị của tài liệu tham khảo. Vì vậy, các sửa đổi đối với đối tượng có thể được nhìn thấy bên ngoài hàm, nhưng việc gán biến cho một đối tượng mới không thay đổi bất cứ điều gì bên ngoài hàm.

Nó về cơ bản giống như vượt qua một con trỏ trong C hoặc loại tham chiếu trong Java.

Kết quả của trường hợp

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

91 là vì toán tử đó thực sự sửa đổi danh sách tại chỗ, do đó, hiệu ứng có thể nhìn thấy bên ngoài chức năng.
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

92 cũng là một hoạt động tại chỗ, giải thích trường hợp cuối cùng của bạn.

Đã trả lời ngày 24 tháng 11 năm 2018 lúc 14:54Nov 24, 2018 at 14:54Nov 24, 2018 at 14:54Nov 24, 2018 at 14:54

Là Python Pass-By-Reference hay Pass-By-Agents?09 tháng 2 năm 2014Giả sử tôi nói với chất béo, hoặc Kevin nói với béo, bạn không trải nghiệm Chúa. Bạn chỉ đơn thuần trải nghiệm điều gì đó với những phẩm chất và khía cạnh, bản chất và sức mạnh và sự khôn ngoan và lòng tốt của Chúa. Điều này giống như trò đùa về tuyên bố của Đức đối với sự trừu tượng kép; Một cơ quan của Đức về văn học Anh tuyên bố, Ham Hamlet không được viết bởi Shakespeare; Nó chỉ được viết bởi một người đàn ông tên là Shakespeare. Trong tiếng Anh, sự khác biệt là bằng lời nói và không có ý nghĩa, mặc dù tiếng Đức là ngôn ngữ sẽ thể hiện sự khác biệt (chiếm một số tính năng kỳ lạ của tâm trí Đức).Valis, p71 (Phiên bản Creb-of-the-Tháng)Philip K. Dick không được biết đến với văn xuôi ánh sáng hoặc tiêu hóa. Đại đa số các nhân vật của anh ấy rất cao. Giống như, thực sự, thực sự, thực sự cao. Tuy nhiên, trong câu trích dẫn trên từ Valis (xuất bản năm 1981), ông đưa ra một lời giải thích có tầm nhìn đáng kể về mô hình Python bị hiểu lầm khét tiếng. Cộng với sự thay đổi ça, cộng với các loại thuốc Omnomnomnom nhất.Hai cách tiếp cận được biết đến rộng rãi và dễ hiểu nhất đối với tham số truyền qua các ngôn ngữ lập trình là từng tham chiếu và vượt qua. Thật không may, Python là người tham khảo theo từng đối tượng, trong đó thường được nói:Tài liệu tham khảo đối tượng được truyền qua giá trị.Khi tôi lần đầu tiên đọc định nghĩa tự mãn và quá thích, tôi muốn đấm một cái gì đó. Sau khi loại bỏ những mảnh vỡ của kính khỏi tay tôi và được hộ tống ra khỏi câu lạc bộ thoát y, tôi nhận ra rằng cả 3 mô hình có thể được hiểu theo cách chúng khiến 2 chức năng sau đây hoạt động:def reassign(list): list = [0, 1] def append(list): list.append(1) list = [0] reassign(list) append(list)Hãy để khám phá.Biến không phải là đối tượng

Ham Hamlet không được viết bởi Shakespeare; Nó chỉ được viết bởi một người đàn ông tên là Shakespeare. Cả Python và PKD đều có sự khác biệt quan trọng giữa một thứ và nhãn chúng tôi sử dụng để chỉ điều đó. Người đàn ông tên là Shakespeare là một người đàn ông. Cấm Shakespeare chỉ là một cái tên. Nếu chúng ta làm:

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

3

Sau đó

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

93 là danh sách trống.
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 là một biến chỉ vào danh sách trống, nhưng bản thân
a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

6 không phải là danh sách trống. Tôi vẽ và thường xuyên gọi các biến là các hộp của các hộp có chứa các đối tượng; Nhưng tuy nhiên bạn quan niệm về nó, sự khác biệt này là chìa khóa.

Pass-by-reference

Trong từng tham chiếu, hộp (biến) được chuyển trực tiếp vào hàm và nội dung của nó (đối tượng được biểu thị bởi biến) hoàn toàn đi kèm với nó. Bên trong bối cảnh chức năng, đối số về cơ bản là một bí danh hoàn chỉnh cho biến được truyền bởi người gọi. Chúng là cả hai cùng một hộp, và do đó cũng đề cập đến cùng một đối tượng trong bộ nhớ.

Do đó, bất cứ điều gì chức năng làm cho biến hoặc đối tượng mà nó biểu thị sẽ được hiển thị cho người gọi. Ví dụ, chức năng có thể thay đổi hoàn toàn nội dung biến và trỏ nó vào một đối tượng hoàn toàn khác:

Hàm cũng có thể thao tác đối tượng mà không cần chỉ định lại nó, với cùng một hiệu ứng:

Để nhắc lại, trong các tham chiếu qua, chức năng và người gọi đều sử dụng cùng một biến và đối tượng.

Pass-by-value

Trong từng giá trị, hàm nhận được một bản sao của các đối tượng đối số được truyền bởi người gọi, được lưu trữ ở một vị trí mới trong bộ nhớ.

Hàm sau đó cung cấp hiệu quả hộp riêng của nó để đặt giá trị vào và không còn bất kỳ mối quan hệ nào giữa các biến hoặc các đối tượng được gọi bởi hàm và người gọi. Các đối tượng tình cờ có cùng một giá trị, nhưng chúng hoàn toàn tách biệt và không có gì xảy ra với người này sẽ ảnh hưởng đến người kia. Nếu chúng ta lại cố gắng chỉ định lại:

Bên ngoài chức năng, không có gì xảy ra. Tương tự:

Các bản sao của các biến và đối tượng trong bối cảnh của người gọi được cách ly hoàn toàn.

Pass-by-object-reference

Python là khác nhau. Như chúng ta đã biết, trong Python, các tài liệu tham khảo đối tượng của người Viking được truyền qua giá trị.

Một hàm nhận được tham chiếu đến (và sẽ truy cập) cùng một đối tượng trong bộ nhớ như được người gọi sử dụng. Tuy nhiên, nó không nhận được hộp mà người gọi đang lưu trữ đối tượng này; Như trong từng giá trị, hàm cung cấp hộp riêng và tạo một biến mới cho chính nó. Hãy thử nối lại lần nữa:

Cả hàm và người gọi đều đề cập đến cùng một đối tượng trong bộ nhớ, vì vậy khi hàm nối thêm một mục bổ sung vào danh sách, chúng ta cũng thấy điều này trong trình gọi! Họ tên khác nhau cho cùng một điều; Các hộp khác nhau chứa cùng một đối tượng. Đây là những gì có nghĩa bằng cách truyền các tham chiếu đối tượng theo giá trị - hàm và người gọi sử dụng cùng một đối tượng trong bộ nhớ, nhưng được truy cập thông qua các biến khác nhau. Điều này có nghĩa là cùng một đối tượng đang được lưu trữ trong nhiều hộp khác nhau và loại ẩn dụ bị phá vỡ. Giả vờ nó lượng tử hay gì đó.

Nhưng điều quan trọng là chúng thực sự là những cái tên khác nhau và các hộp khác nhau. Trong từng tham chiếu, về cơ bản chúng là cùng một hộp. Khi bạn cố gắng gán lại một biến và đặt một cái gì đó khác biệt vào hộp chức năng, bạn cũng đặt nó vào hộp người gọi, vì chúng là cùng một hộp. Nhưng, trong tham chiếu qua từng đối tượng:

Người gọi không quan tâm nếu bạn phân công lại hộp chức năng. Các hộp khác nhau, cùng một nội dung.

Bây giờ chúng ta thấy những gì Philip K. Dick đã cố gắng nói với chúng ta. Một cái tên và một người là những thứ khác nhau. Một biến và một đối tượng là những thứ khác nhau. Được trang bị kiến ​​thức này, có lẽ bạn có thể bắt đầu suy luận những gì xảy ra khi bạn làm những việc như

a = [1, 2, 3]

def func(input_list):
input_list[2] = 11
return input_list

b = func(a)
print("list a:", a)
print("list b:", b)

4

Bạn cũng có thể muốn đọc về các tương tác thú vị mà các khái niệm này có với các loại có thể thay đổi và bất biến. Nhưng đó là những câu chuyện cho một ngày khác. Bây giờ nếu bạn tha thứ cho tôi, tôi sẽ đọc sách DO DO ANDROIDS DREAM of Electric Sheep? - Bản trình diễn meta của tôi là một chút gỉ.

Liên kết hữu ích

http://foobarnbaz.com/2012/07/08/undermed-python-variables/ http://javadude.com/articles/passbyvalue.htm

Danh sách có được thông qua bởi tham chiếu không?

Danh sách đã được thông qua bởi tham chiếu, trong đó tất cả các tên Python là tài liệu tham khảo và các đối tượng danh sách là có thể thay đổi.Sử dụng gán lát cắt thay vì gán thông thường.

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.return values are always returned by value. However, the value being returned (or passed) is a reference to a potentially shared, potentially mutable object.return values are always returned by value. However, the value being returned (or passed) is a reference to a potentially shared, potentially mutable object.

Python có vượt qua được giá trị và vượt qua không

Mô hình truyền cho đối số của Python không phải là người vượt qua giá trị, hay vượt qua bằng cách tham chiếu, nhưng đó là cách vượt qua tham chiếu đối tượng....

Làm thế nào các danh sách được chuyển đến các chức năng Python?

Sử dụng hàm tuple () trong hàm python Tuple () chia tất cả các phần tử của danh sách bằng cách chuyển đổi danh sách thành một tuple và các phần tử được giải quyết dưới dạng các biến riêng biệt được truyền dưới dạng đối số sang hàm. The tuple() function splits all the elements of a list by converting the list to a tuple, and the elements are tackled as separate variables are passed as arguments to the function. The tuple() function splits all the elements of a list by converting the list to a tuple, and the elements are tackled as separate variables are passed as arguments to the function. The tuple() function splits all the elements of a list by converting the list to a tuple, and the elements are tackled as separate variables are passed as arguments to the function.