2018-11-22
阿新 • • 發佈:2018-11-22
基本資料型別
int
建立物件方式
建立物件的兩種方式
int a =1
int a = int(1)
實際呼叫的方法
__init__()
拓展
base
直接把字串解析為數字,跟10的效果一樣
int("11",0)
以二進位制的形式解析字串
int("11",2)
__call__
物件例項化時呼叫的方法
class Dog: def __init__(self): print("dog coming") def __call__(self): print("i'm invoked") dog = Dog() #dog coming dog() #i'm invoked
int型別長度
2位二進位制表示的最大數是2^2 -1 ,因為第三位的數是2^2次方
最大數除以2,32位表示最大正數是2^32-1
正負表示-2^31 ~ 2^31-0.5(估計是四捨五入,直接減1算了)
32位表示範圍是-2^31 ~ 2^31-1
64位表示範圍是-2^63 ~ 2^63-1
近似於無限
a = int(2**64)
print(a)
#18446744073709551616
記憶體分析
引用物件,用的一塊記憶體
n1=2 n2=n1
-5~257
如果很多數都是2
n1=2 n2=2...n1000=2
每塊用的記憶體不同,浪費
python優化,這個區間的數n1000
n1
的記憶體空間一樣記憶體地址通過id(i)驗證
a = int(1)
c = int(1)
b = int(345)
print(id(a),id(c),id(b))
#140406456890528 140406456890528 140406437991216
str
兩種建立方式
st = "abc" st = str("abc")
引數
字元與位元組
一個位元組,是8位;一箇中文三個位元組,可以用最多兩位16進製表示
2**8 -1 == 16**2 -1
如果是utf-8編碼的,就以字元(預設三個位元組)取出
st = "好人" #st = st.encode("gbk") for i in st: print(i) #好 #人
如果是其他編碼(如GBK)的,就每次兩個位元組取出
st = "好人"
st = st.encode("gbk")
for i in st:
print(i)
#186
#195
#200
#203
互相轉換
字元轉位元組
st = "好人"
b = bytes(st,encoding="utf-8")
print(b)
#b'\xe5\xa5\xbd\xe4\xba\xba'
位元組轉字元
st = "好人"
b = bytes(st,encoding="utf-8")
name = str(b,encoding="utf-8")
print(name)
#好人
兩臺伺服器互相傳送訊息都是通過位元組傳送
list
兩種建立方式
li = [1,2] li=list()
引數
st = "好人"
li = list(st)
m = {"firstname":"好","lastname":"人"}
li2 = list(m)
print(li) # ['好', '人']
#預設只iterate字典的keys
print(li2) # ['firstname', 'lastname']
方法拾遺
清空
clear
li = [1,2]
li.clear()
print(li)
#[]
擴充套件
extend
li = [1,2]
li2 = [3,4]
li.extend(li2)
print(li)
#[1, 2, 3, 4]
翻轉
reverse
li = [1,2]
li.reverse()
print(li)
#[2, 1]
插入
insert
li = [1,2]
li.insert(0,4)
print(li)
#[4, 1, 2]