可變物件和不可變物件
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 變...