python 第二章 物件與型別

2022-03-05 19:16:17 字數 2895 閱讀 7418

可變物件和不可變物件

1,可變物件,list(列表),dict(字典),集合(set),位元組陣列。

2,不可變物件,數值型別,字串,位元組串,元組(具體形式 ())。

注意條件:可變和不可變指的是該物件指向的記憶體是否可以改變。當修改不可變物件的時候,它會重新複製乙份,然後再改變相應的值,原來的那一分就會相當與垃圾被去除。

>>> print(id(aee))

140375930246848

>>> aee+= ()

>>> print(id(aee))// 加了乙個空元素之後,元祖的位址改變了。

140375898807608

>>> stra= '12'

>>> print(id(stra))

140375899220376

>>> stra+= ''

>>> print(stra)

12>>> print(id(stra))// 加了乙個空字元的時候,字串的位址並沒有被改變。 int同理。但是float的話,會有精度問題

140375899220376

變數與物件的關係(多個變數共享引用同一物件)

1,不可變物件之間的改變不會互相影響

>>> a=1

>>> print(a)

1>>> b=a

>>> print(b)

1>>> b=2

>>> print(b)

2>>> print(a)

1

2,可變物件之間的改變會相互影響

>>> a=[1,23,4]

>>> print(a)

[1, 23, 4]

>>> b=a

>>> print(b)

[1, 23, 4]

>>> print(b)

[1, 23, 4, 188]

>>> print(a)

[1, 23, 4, 188]

我覺得這個地方恰好解釋了可變物件和不可變物件之間的區別,可變物件直接改變的是位址,所以指向這個位址的量對應的會發生改變,而不可變物件「修改」的原理是新開闢一段記憶體,把原來的內容複製過來,然後再進行相應的改變。

數字整數型別

十進位制,1,23等等

十六進製制,0x或者0x開頭。

八進位制,0o開頭。

二進位制,0b開頭。

int不受位數的限制,只收記憶體的限制。

字串(python中只接受unicode編碼)

索引,切片

索引是取出乙個字元,切片是取出一片字元。

>>> s="huangqingxiang"

>>> len(s)

14>>> s[0]// 從第0位開始,長度是14的話,最後一位的編號為13

'h'>>> s[-14]// 如果是從右邊開始數的話,開始為-1

'h'>>> [-1]

[-1]

>>> s[-1]

'g'>>> s[13]

'g'>>> s[14]

traceback (most recent call last):

file "", line 1, in indexerror: string index out of range

>>> s[5:8]//擷取從編號為5的字串到第7位停止,左必右開

'qin'

>>> s[5:]//從編號為5的開始往後所有的字串都擷取出來

'qingxiang'

>>> s

'huangqingxiang'

單個字元的字串問題

>>> s='a'

>>> ord(s)//當前字元的ascii編碼,ord是得到當前字串的unicode編碼

65>>> chr(s)

traceback (most recent call last):

file "", line 1, in typeerror: an integer is required (got type str)

>>> chr(65)//ascii編碼對應的字母

'a'

對encode()函式和decode()函式的初級理解

字面意思,encode指的是編碼,decode指的是解碼

>>> u='s'

>>> s1=u.encode('gb2312')//這裡的gb2312指的是一種編碼方式,獲得bytes型別的型別物件

>>> s1

b's'

>>> s2=s1.decode('gb2312')

>>> s2

's'

位元組串(不可變物件)

位元組串類似於字串,可以進行連線,重複運算。但是位元組串是由單個位元組組成的串,他的值是不可顯示的**,所以位元組串是二進位制資料,字串值是文字資料序列。具體形式,資料的開始是以字母』b'或者『b'開始,以單,雙引號個三引號引起來的位元組串。』

>>> x=b'\xff\xf1\x01'

>>> type(x)

>>> x=b'\xff\xf1\x01'

>>> type(x)

>>> x=bytes(10)

>>> x

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

位元組陣列

>>> bytearray()

bytearray(b'')

>>> x=bytearray(10)

>>> x

bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')

第二章 類與物件

c 中物件的型別稱為類 class 類是物件的抽象,而物件是類的具體例項。類是抽象的,不占用記憶體,物件是具體的,占用儲存空間。類的宣告格式 class 類名 public 公用的資料和成員函式 private 私有的資料和成員函式 private和public稱為成員訪問限定符,被宣告為私有的成員...

Python第二章資料型別

基本資料型別 python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值 以後該變數才會被建立。python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。等號 用來給變數賦值。等號 運算子左邊是乙個變數名,等號 運算子右邊是儲存在變數中的值。例如 x ...

第二章 物件導向

1 資料型別 簡單資料型別 byte short int long float double char bool 組合資料型別 struct enum class 值型別 內部資料變化不改變外部資料 struct int float 引用型別 內部資料變化改變外部資料 陣列 指標 class 2 變...