Python immutable and mutable

主要內容轉載自他人csdn博客
知識點:python中,萬物皆對象。python中不存在所謂的傳值調用,一切傳遞的都是對象的引用,也可以認為是傳址。

一、可變對象和不可變對象

Python在heap中分配的對象分成兩類:可變對象和不可變對象。所謂可變對象是指,對象的內容可變,而不可變對象是指對象內容不可變。
不可變(immutable):int、字符串(string)、float、(數值型number)、元組(tuple)
可變(mutable):字典型(dictionary)、列表型(list)
e.g:

>>> i=73
>>> a=i
>>> i+=2
>>> i
75
>>> a
73
20140902164438953.png

如圖所示,當i+=2時,不可變對象的特征沒有變,變的只是創建了新對象,改變了變量的對象引用。同理我們創建新的變量a指向i時,它也創建了自己的新對象,所以不受l的修改而修改


再舉一個可變對象的例子
e.g.:

>>> m=[5,9]
>>> a=m
>>> a
[5, 9]
>>> m.append(6)
>>> m
[5, 9, 6]
>>> a
[5, 9, 6]
20140902165215796.png

這里我們對list m做了修改,因為list為可變對象,所以它沒有創建新對象和改變對象引用,它只是修改了引用對象。同時我們讓一個新變量a指向m,因為m的引用對象發生了改變,所以a的引用對象也發生了改變。


這里注意區分兩種可變不可變

immutable and mutable指的是上面的講解,而有時候說list可變而tuple不可變指的是tuple一旦初始化就不能修改,它沒有像list一樣的append(),insert()這樣的方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 個人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,768評論 0 5
  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,628評論 1 118
  • 一、python 變量和數據類型 1.整數 Python可以處理任意大小的整數,當然包括負整數,在Python程序...
    績重KF閱讀 1,780評論 0 1
  • 最近在慕課網學習廖雪峰老師的Python進階課程,做筆記總結一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,736評論 0 5
  • 茹萍最近瘋狂地迷上了購物。 不是淘寶天貓京東,而是實體店,盡管現在每天都累得像狗一樣,可是只要有一點點閑暇功夫,如...
    時時糖果雨閱讀 333評論 0 1