[英]Please Explain the Difference between these two Codes
代碼1
nums = [1, 2, 3]
tri = nums
nums.append(4)
print(tri) //this prints [1, 2, 3, 4]
代碼2
num = 9
num2 = num
num = 12
print num2 // this prints 9 **BUT I expected 12 like abouve code**
我的問題是,當程序和作業幾乎相似時,為什么這兩個輸出之間存在差異?
在您的第一個示例中, nums
和tri
引用相同的對象。 append
方法修改了引用對象,因此nums
和tri
繼續引用相同(修改)的對象。
在第二個例子中, num
被設置為一個全新的對象(12); num2
繼續引用更改其值之前引用的num
的對象(9)。
nums是一個列表,因此它通過引用復制,num按值復制。
您可以使用tri = nums[:]
按值復制nums
代碼1你使用元組。 元組是引用類型數據。 (陣列,元組,類)
代碼2是你使用整數。 這是價值類型數據。
值類型始終將值復制到另一個內存位置。
但是引用數據類型總是將值替換為內存位置。
這個概念帶有面向對象的編程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.