Python學習第一彈小總結

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
  • 共軛複數:
  1. 實部相等,虛部互爲相反數;
  2. 在複平面上,表示兩個共軛複數的點關於x軸對稱;
  3. 若是虛部爲0,則共軛複數就是自己.

Fraction(x,y): 分子爲x,分母爲y

03 list 列表: 切片用法

  • list.append() //添加對象
  • list.extend() //添加一個可迭代的對象

extend()方法的參數必須是一個可迭代對象,新的內容是追加到原列表最後一個元素的後面app

  • list.insert() //兩個參數,第一個是插入的位置,第二個是插入的內容
  • list.remove() //刪除指定元素
  1. 若是列表中存在多個元素,只會刪除第一個匹配的元素
  2. 若是指定元素不存在,程序會報錯
  • 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)

運算符優先級(參考): 從高到低排序

  1. 綁定或元組顯示, 列表顯示, 字典顯示, 集合顯示
  2. x[index]\ x(args)\ x.attribute: 下標, 切片, 函數調用, 屬性引用
  3. await x: await 表達式
  4. **: 指數
  5. +x, -x ~x: 正號,負號,按位翻轉
  6. *, @, /, //, %: 乘法, 矩陣乘法, 除法, 地板除, 取餘
  7. +, -: 加法, 減法
  8. << , >>: 移位
  9. &: 按位與
  10. ^: 按位異或
  11. |: 按位或
  12. in, not in, is, is not, < , <=, >, >=, !=, ==: 比較
  13. not: 布爾"非"
  14. and: 布爾"與"
  15. or: 布爾"或"
  16. if-else: 條件表達式
  17. 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的緩存重用機制

  • 以前在程序中建立過,就直接存入緩存,後續再也不建立, 生效範圍: 全局
    1. 範圍在[-5,256]之間的小整數
    2. 字符串對象
  • 只在該代碼塊內建立過就直接緩存,後續再也不建立, 生效範圍: 本代碼塊
    1. 大於256的整數
    2. 大於0的浮點型對象
  • 不進行緩存,每次都須要額外建立
    1. 小於0的浮點型對象
    2. 小於-5的整數
相關文章
相關標籤/搜索