1. 程式人生 > >【old】博客還是需要寫的哦-第二階段

【old】博客還是需要寫的哦-第二階段

python

1)預備知識

1.1)預備知識1--python的變量及其存儲

·python中,變量保存的是對象的引用,我們稱之為"引用語義".
·采用這種語義,變量需要的內存大小一致,因為變量只是保存了一個引用.

1.2)各基本數據類型的地址存儲及改變情況

如果一個數據類型,可以將其他的數據類型作為自己的元素,我就認為這是一種數據結構

技術分享圖片

python中的變量都采用"引用語義".因此導致每個變量中存儲的只是"對象的地址",不是"對象本身".對於復雜的數據結構來說,變量中存儲的也是"對象的地址",

而不是"對象的本身".


1.2.1)數據類型初始化對python語義引用的影響

因為"基本數據類型"都是不可變對象,變量的每一次初始化,都會開辟新的空間,將新對象的地址重新賦值給變量.

技術分享圖片 技術分享圖片


從上圖可以看出:基本數據類型在初始化時,由於不可變性,會新開辟空間,將新對象的地址重新復制給變量.


1.2.2)數據結構內部元素變化對python語義引用的影響

對於復雜的數據結構,改變內部的值對語義引用的影響

技術分享圖片 技術分享圖片


對列表中的元素進行"增刪改查"時,是不會影響到lst1列表本身的整個列表地址的,只會改變內部元素的"地址引用".


2)賦值

2.1)簡單數據類型賦值

技術分享圖片 技術分享圖片


重新賦值就是將新開辟空間的對象的地址賦值給新的變量而已.

2.2)復雜數據結構的賦值

技術分享圖片

技術分享圖片

對復雜的數據結構進行賦值操作,不會改變原始lst1列表的整個列表地址,只會改變內部元素的指向地址.進行"增刪改查"操作,兩者都會發生改變,但是lst1

和lst2的整個列表地址不會發生改變

就好比,兩個人坐在一個桌子上面吃飯,只要桌子不變,桌子上的菜發生改變兩者都是可以看到的.


3)拷貝

背景:

對於復雜的數據結構,賦值相當於兩者共享資源,一個值得改變會影響到另外一個對象.

有時候我們需要在不更改原始數據的情況下,去修改數據,這時候就需要使用到"拷貝"

拷貝只對"數據結構"有用,基本數據類型都為"不可變對象",不存在"深淺拷貝"


3.1)淺拷貝

不管對麽復雜的數據結構:淺拷貝只會拷貝一層數據結構.

技術分享圖片

技術分享圖片


【old】博客還是需要寫的哦-第二階段