00 變量的本質 ---- 對象
python內部使用了一個對象模型,用來存儲變量以及對應的數據,python中的任何類型的變量都會被翻譯成一個對象,這就是變量的本質.python
python內部的對象模型由3部分組成: 身份(函數id) 、類型(type) 、 值(即變量自己)算法
- 身份: 用來標識對象的惟一標識,經過調用函數id能夠獲得它,個人理解是它多是對應存儲的內存地址索引的一個id值,能夠調用函數id()查看id值;
- 類型: 用來代表對象能夠存放的類型,該具體類型限制了該對象保存的內容、能夠進行的操做、遵循的規則,能夠調用函數type()查看類型;
- 值: 即該對象存儲的具體數值,變量自己即是它的值.
python中內置了兩個幫助函數:
- dir: 用來查詢類或者類型的全部屬性,如: dir(list)
- help: 用來查詢類或者類型具體的說明文檔,如: help(int)
01 python3的六個標準的數據類型
- Number(數字)
- String(字符串)
- List(列表)
- Set(集合)
- Tuple(元組)
- Dictionary(字典)
python3的六個標準數據類型中:緩存
- 不可變數據(3個): Number(數字) 、String(字符串) 、Tuple(元組)
- 可變數據(3個): List(列表) 、 Dictionary(字典) 、 Set(集合)
02 數字類型
整數(int) 、 浮點數(float) 、複數(complex) 、 布爾(bool)bash
- python3只有一種整數類型int,表示爲長整型,沒有python2的Long
- 浮點數精確度問題
0.1+0.2 = 0.30000000000000004
0.1+0.7 = 0.7999999999999999
複製代碼
能夠導入模塊 decimal (十進制)
`import decimal`
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a+b) // 0.3
複製代碼
x = 1 + 2j // 1.0是實部的值,2.0是虛部的值
x.real 獲取實部的值
x.imag 獲取虛部的值
複製代碼
關於複數: z = a + bj
- 複數的模:
|z|= √ a^2+b^2
- 共軛複數:
- 實部相等,虛部互爲相反數;
- 在複平面上,表示兩個共軛複數的點關於x軸對稱;
- 若是虛部爲0,則共軛複數就是自己.
Fraction(x,y): 分子爲x,分母爲y
03 list 列表: 切片用法
- list.append() //添加對象
- list.extend() //添加一個可迭代的對象
extend()方法的參數必須是一個可迭代對象,新的內容是追加到原列表最後一個元素的後面app
- list.insert() //兩個參數,第一個是插入的位置,第二個是插入的內容
- list.remove() //刪除指定元素
- 若是列表中存在多個元素,只會刪除第一個匹配的元素
- 若是指定元素不存在,程序會報錯
- list.pop() //出棧,返回出棧的元素
- list.clear() //清空列表
- list.sort() //排序
- list.reverse() //反轉列表
- list.count() //查找某個元素出現的次數
- list.index() //查找某個元素的索引值
1.若是是多個相同元素會返回第一個出現的元素索引值
2.還有兩個參數: start和end,能夠指定查找的起始和結束位置函數
- list.copy() // 拷貝(淺拷貝)列表也可使用切片: list[:]
04 python的一些特殊算法
x == ( x // y ) * y + ( x % y )spa
- x // y: x除以y的結果(地板除: 相除以後得出一個整數結果,若結果不爲整數,則向下取整)
- abs(x): x的絕對值,若是x是複數,則返回複數的模
- int(x),float(x): 轉換成對應的數據類型
- complex(re,im): 返回一個複數,re是實部,im是虛部
- c.conjugate(): 返回c的共軛複數
- pow(x,y): 返回x的y次方
- x ** y: 返回x的y次方
- divmod(x,y): 返回(x//y,x%y)
運算符優先級(參考): 從高到低排序
- 綁定或元組顯示, 列表顯示, 字典顯示, 集合顯示
- x[index]\ x(args)\ x.attribute: 下標, 切片, 函數調用, 屬性引用
- await x: await 表達式
- **: 指數
- +x, -x ~x: 正號,負號,按位翻轉
- *, @, /, //, %: 乘法, 矩陣乘法, 除法, 地板除, 取餘
- +, -: 加法, 減法
- << , >>: 移位
- &: 按位與
- ^: 按位異或
- |: 按位或
- in, not in, is, is not, < , <=, >, >=, !=, ==: 比較
- not: 布爾"非"
- and: 布爾"與"
- or: 布爾"或"
- if-else: 條件表達式
- lambda: Lambda 表達式
05 循環和分支
python的循環和分支的執行塊是按照縮進來斷定的,因此要注意縮進翻譯
if-else分支判斷:
就是普通那樣的if-else,python還有一種奇怪的寫法(讀起來感受很累): 'a' if True else 'b'
若是條件爲真,則值爲a,不然值爲bcode
while循環:
符合條件則一直循環下去,分別有條件不符合,break,continue能夠控制跳出循環;對象
break和continue的區別:
break是直接跳出並結束循環,continue則是跳出這次循環,會繼續執行下一個符合條件的循環,若是while循環以後還有一個else,break會直接跳過它,而continue不會.
for循環: 也能夠搭配break,continue使用
語法: for 變量 in 可迭代對象(Iterable):
statement(s)
複製代碼
可迭代對象: 便可循環的對象,例如str,list,dict等
若是要循環整型,能夠配合range()函數使用
06 python的緩存重用機制
- 以前在程序中建立過,就直接存入緩存,後續再也不建立, 生效範圍: 全局
- 範圍在[-5,256]之間的小整數
- 字符串對象
- 只在該代碼塊內建立過就直接緩存,後續再也不建立, 生效範圍: 本代碼塊
- 大於256的整數
- 大於0的浮點型對象
- 不進行緩存,每次都須要額外建立
- 小於0的浮點型對象
- 小於-5的整數