python在heap中分配的物件分成兩類:可變物件和不可變物件。所謂可變物件是指,物件的內容是可變的,例如list。而不可變的物件則相反,表示其內容不可變。
一、不可變物件
由於python中的變數存放的是物件引用,所以對於不可變物件而言,儘管物件本身不可變,但變數的物件引用是可變的。
從上面得知,不可變的物件的特徵沒有變,依然是不可變物件,變的只是建立了新物件,改變了變數的物件引用。
輸出:
二、可變物件
其物件的內容是可以變化的。當物件的內容發生變化時,變數的物件引用是不會變化的。如下面的例子:
三、函式引數
python函式引數對於可變引數,函式內對引數的改變會影響到原始物件,對不可變引數,函式內對引數的改變不會影響到原始引數
輸出結果:
總結:函式通過引用呼叫,只有可變物件函式內對引數的改變會影響到原始的物件,對於不可變物件來說,函式內對
引數的改變,不會影響到原始的物件,具體原因:
1、可變物件,引數圖,改變的是可變物件
2、不可變物件,改變的是函式內變數的指向物件
python 可變物件和不可變物件
變數沒有型別,那麼就意味著它可以隨意指向任何物件。python中的變數相當於乙個指標。當將乙個變數a賦值給另乙個變數b時,無論變數a指向的是可變物件還是不可變物件,變數b指向變數a指向的物件。例 alist 1 2,3 anolist alist id alist id anolist true b...
Python可變物件和不可變物件
python中一切皆物件,每個物件都有其唯一的id,對應的型別和值,其中id指的是物件在記憶體中的位置。根據物件的值是否可修改分為可變物件和不可變物件。其中,不可物件包括 數字,字串,tuple,frozenset 不可變集合 可變物件包括 list,dict,set python中的變數可以指向任...
可變物件和不可變物件
要理解可變物件和不可變物件,先要理解final關鍵字。參考此部落格 沒有經過原博主的同意便引用了一些,侵刪!final關鍵字可以用來修飾類 方法和變數 成員或區域性 final修飾類時表明這個類不能被繼承。final類中的方法會被隱式的定義為fianl,變數自行定義需要不要被final修飾。fina...