Python——知識點小結

優雅 明確 簡單  (解釋執行 不需要編譯 速度慢 代碼少)
適合:
1.開發web網站和各種網站服務
2.系統工具和腳本
3.把其他語言開發的模塊包裝起來 方便使用

知識點
1.單行註釋:以#開頭, 多行註釋:'''   ''' 
2.中文支持: #coding=utf-8    或者  #-*- coding=utf-8 -*-
3.標示符的規則:由字母、下劃線和數字組成,且數字不能開頭
4.格式化輸出: print("我的姓名是%s,年齡是%d"%(name,age))
5.輸入: Python3使用 input 接受的輸⼊必須是表達式,Python2使用 raw_input
6.切片:[起始位置:終止位置:步長]   默認步長爲1
7.字符串: split() 通過指定分隔符對字符串進行切片,如果參數 num 有指定值,則分隔 num+1 個子字符串
8.列表:添加元素(append() insert() extend()),刪除元素(pop() remove() del x[下標]),改()
9.排序: 逆置reverse()  正序sort()  倒序:sort(reverse=True)
10.元組:元組與列表類似,不同之處: 元組的元素不能修改,元組使用小括號,列表使方括號, aTuple = ('et',77,99.9)
11.字典:info = {"name":"xiaoming", "id":"100"}
12.可變類型與不可變類型: 
   可變類型,值可以改變:列表 list, 字典 dict
   不可變類型,值不可以改變:數值類型 int, long, bool, float,字符串 str,元組
   num+=num  並不等價於 num=num+num
13.函數:
   1)定義參數表示形參, 調用參數表示實參
   2)可以返回多個值(元組)
   3)帶有默認值的參數一定要位於參數列表的最後面
   4)不定長參數:def fun([formal_args,] *args, **kwargs):   //args爲元組,kwargs爲字典
        >>> c = (3, 4, 5)
        >>> d = {"m":6, "n":7, "p":8}
        >>> fun(1, 2, *c, **d) # 注意元組與字典的傳參形式
   5)Python中函數參數是引用傳遞(注意不是值傳遞)。對於不可變類型,因變量不能修改,所以運算不會影響到變量本身;
      對於可變類型來說,函數體中的運算有可能會更改傳入的參數變量;
14.全局變量:需要修改使用global
15.Lambda函數:接收任何數量的參數但只能返回一個表達式的值,匿名函數不能直接調用print,因爲lambda需要一個表達式,舉例:lambda x: x + 1
16.交換兩個變量:三種,第一種:中間變量;第二種:一加一減; 第三種:a,b = b,a
17.類:定義有兩種,經典類和新式類Car(object),命名規則按照"大駝峯", 擁有屬性和方法
   1) 魔法方法:__xxxx__(self),定義__str__(self)方法,當使用print輸出對象時,就會打印從在這個方法中return的數據
   2) self:可以理解爲自己,相當於C++中的this指針
   3) 每個方法第一個參數都需要是self
   4) Python中沒有像C++中public和private這些關鍵字來區別公有屬性和私有屬性
   5) 方法和屬性區分:加了2個下劃線'__',表明該方法或者屬性是私有,否則爲公有
   6) 類屬性:類屬性屬於類對象,並且多個實例對象之間共享一個類屬性;
   7) 實例屬性:和具體的某個實例對象有關係,並且一個實例對象和另外一個實例對象是不共享屬性的;
   8) 類方法:@classmethod 第一個參數是類對象cls,通過cls引用的必定是類對象的屬性和方法,而實例方法self可能引用的是類屬性或者實例屬性
   9) 靜態方法:@staticmethod 不需要額外定義參數,靜態方法中引用類屬性的話,必須通過類對象來引用
   
18.列表生成式:a = [i for i in range(1,10)]
19.集合set:沒有相同的數據,{},去重,爲集合,強轉爲list
20.eval(): 函數用來執行一個字符串表達式,並返回表達式的值
21.is:是比較兩個引用是否指向了同一個對象(引用比較)
22.==:是比較兩個對象是否相等
23.動態語言:可以在運行的過程中修改代碼; 靜態語言:編譯時已經確定好代碼,運行過程中不能修改,__slots__變量,來限制該class實例能添加的屬性
24.淺拷貝:對於一個對象的頂層拷貝,意思就是拷貝了引用,沒有拷貝內容
   深拷貝:對一個對象所有層次的拷貝(遞歸)  copy.deepcopy(a), 淺拷貝對不可變類型和可變類型的copy不同
25.左移: << 左移1位相當於乘以2,用途:快速計算一個數乘以2的n次方 (8<<3 等同於8*2^3)
26.&按位與:全1才1否則0,|按位或:有1就1, ^按位異或:不同爲1,~ 取反(正數的原碼=反碼=補碼)
    正數:原碼 = 反碼 = 補碼
    負數:反碼 = 符號位不變,其他位取反補碼 = 反碼+1
27.Iterable對象:凡是可作用於for循環的對象都是Iterable 類型;
   迭代器Iterator:可作用於next()函數的對象都是Iterator 類型;
   集合數據類型如:list、dict、str等是Iterable但不是Iterator ,不過可以通過iter()函數獲得一個Iterator對象
28.閉包:在函數內部再定義一個函數,並且這個函數用到了外邊函數的變量;
29.裝飾器:@函數名 是python的一種語法糖,一般情況下爲了讓裝飾器更通用,可以有return
    1) 引入日誌
    2) 函數執行時間統計
    3) 執⾏函數前預備處理
    4) 執⾏函數後清理功能
    5) 權限校驗等場景
    6) 緩存    
30.生成器:一遍循環一邊計算的機制。函數中有yield,生成一個對象,使用一個變量接收,使用next()
31.開放封閉規則:封閉:已實現的功能代碼塊;   開放:對擴展開放
32.小整數對象池:[-5, 257)這些整數對象是提前建立好的,常駐內存,不會被垃圾回收;
   大整數對象池:每一個大整數,均創建一個新的對象,不共用內存,引用計數爲0,銷燬;
   intern機制:單個單詞,不可修改,默認開啓intern機制,共用對象,引用計數爲0,則銷燬;
               字符串(含有空格),不可修改,沒開啓intern機制,不共用對象,引用計數爲0,銷燬;
33.GC垃圾回收:引用計數機制爲主,標記-清除和分代收集兩種機制爲輔的策略;
    引用計數機制,缺點:無法解決循環引用的問題;
    有三種情況會觸發垃圾回收:
    1).調用gc.collect(),
    2).當gc模塊的計數器達到閥值的時候。
    3).程序退出的時候
34.HTTP發佈:python -m http.server 8000
   
   
   
   
   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章