python中的物件 Python中的變數 物件

2021-10-11 02:44:25 字數 1739 閱讀 9276

由於沒時間系統學習下python

只能見乙個問題**乙個問題了

一、初級 - 物件

關於python中的資料型別,今天重新認識了下。【參考】

首先,python中,物件才有型別, 變數是沒有型別的,它只是物件的「引用」。

其次,python中物件被分為兩類:可更改物件和不可更改物件(包括numbers, strings, tuples)。

a = 1 #乙個指向int資料型別的a(再次提醒,a沒有型別)

list_a = [1] #乙個指向list型別物件的list_a ,這個list中包含乙個int物件1a= 2 #a指向乙個新的int物件,其值為2。記憶體中原始的1物件因為不能改變,於是被「拋棄」list_a[0]= 2 #list_a指向的list型別物件的第乙個元素指向乙個新的int物件,原來的物件1被拋棄。

因此,python中的函式引數傳遞也分為兩類:

1.不可變物件引數呼叫

defchangeint( a ):

a= 10nfoo= 2changeint(nfoo)print nfoo #結果是2

2.可變物件引數呼叫

defchangelist( a ):

a[0]= 10lstfoo= [2]

changelist(lstfoo )print lstfoo #結果是[10]

二、高階 - 拷貝

先理解深淺拷貝的概念:

淺拷貝所謂的淺拷貝就是拷貝指向物件的指標,意思就是說:拷貝出來的目標物件的指標和源物件的指標指向的記憶體空間是同一塊空間.

淺拷貝只是一種簡單的拷貝,讓幾個物件公用乙個記憶體,然而當記憶體銷毀的時候,指向這個記憶體空間的所有指標需要重新定義,不然會造成野指標錯誤

深拷貝所謂的深拷貝指拷貝物件的具體內容,其內容位址是自助分配的,拷貝結束之後,記憶體中的值是完全相同的,但是記憶體位址是不一樣的,兩個物件之間相互不影響,也互不干涉.

認真理解 **python深拷貝和淺拷貝 中的例子,應該就可以高階了我猜

小小地總結一下:

1.物件賦值, wilber = will ,之後只要通過will改動其所指向的物件中的元素,wilber所指的物件中的元素就會隨之改變;反之(通過wilber進行改動)亦然。

·但如果will指向的是不可更改物件,那麼will的改動只會讓它自己指向新的記憶體,而wilber不會改變(直接從「賦值」的角度想就可以了)

·如果will指向的是可變更物件,那wilber = will 就相當於是給這個物件起了個「別名」,彼此的改動都互相影響(想起當初的c++了…)

2.淺拷貝,wilber = copy.copy(will),之後通過will改動其所指向的物件中的元素,看被改變的元素是可更改物件還是不可更改物件:

·如果是可更改物件,那wilber所指的物件中的元素隨其發生改變;

·如果是不可更改物件,那麼wilber不會發生改變(看例子中的圖,一目了然)。

反之亦然。

# 其實從這個角度思考更方便明了些,但沒上面這種透徹

3.深拷貝,wilber = copy.deepcopy(will),二者之間的改動互不相干(雖然python的設計是將will和wilber分別所指物件中的可更改物件共享了,但事實上只要改變了這些就會被重新賦值,我猜這只是python用來節約記憶體的乙個技巧,不要被這個搞混了)。

三、擴充套件

python中定義函式時,若想在函式內部對函式外的變數進行操作,就需要在函式內部宣告其為global。

在不將函式外的變數指標加入引數列表的情況下,函式想要改變函式外的變數,可考慮使用global關鍵字

python中迭代器的基本方法 Python迭代器

迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...

python中var是什麼變數 Python 變數

1.python的變數是什麼 變數是用來儲存電腦程式中的資訊,唯一的目的是將資料儲存在記憶體中。2.python變數的組成 變數由字母 數字 下劃線組成 變數的第一位不能是數字,可以是字母或下劃線 python中的關鍵字不能作為變數。python中的關鍵字 and as assert break c...

python中物件的特性 Python物件型別解析

課課家將講述python的物件型別,包括數字 整型 布林型 長整形 浮點型 複數型 字串 列表 元組 字典等。python使用物件模型來儲存資料。構造任何型別的值都是乙個物件。所有的python物件都擁有三個特性 身份 型別 值。身份 每乙個物件都有乙個唯一的身份來標誌自己,任何物件的身份可以使用內...