閱讀718 返回首頁    go Python


Python語法總結

Python 簡明語法總結

!!! 隻針對有經驗開發人員

簡單輸入輸出

輸出

print 10 , 十

輸入

name = raw_input()

python基礎

數據類型和變量

常規類型:整形、浮點型、字符串(以 或者 " 括起來)、布爾值(True, False 奇怪為什麼用大寫)。

轉義使用

多行請用 ... 表示

布爾運算符:and or not

空值:None

python並無實質常量,隻有約定常量,全大寫表示(個人覺得使用objective-c的k開頭表示法也不錯。比如kServerAddress)

字符串和編碼

在日常編寫中似乎用不太到字符編碼互轉的功能

字符串格式化: hello , %@ % world!

使用%s占位符, 使用 % 表示需要格式化字符串,後跟tuple變量

使用list和tuple

list其實就是數組,定義:[ 1 , hello ]

使用len(list)計算數組元素個數

使用(1, 2, 3)定義tuple,其實就是不可變的數組。

條件判斷和循環

代碼段落需要嚴格縮進,不需要大括號。

range(number)可以生成從0 到 number-1的list

可以使用int( string )或者float( string )獲取對應值

使用dict和set

字典類型:dict = { key : value}

使用dict[key]直接取值會報錯,方法是使用 dict.get(key),如果沒有值會返回None

使用pop(key)刪除一個item

set可以看成是在幫你管理一個不可重複元素的列表,並提供一些高級功能,比如聯合()、交(&)、差(-)和對稱差集(^)

函數

定義函數

空函數:pass

類型檢查,python是類型不安全的,所以我們可以通過isinstance(var, (type1, type2))來檢查類型

返回多個值,使用tuple。不過可以省略括號,類似

默認值:,注意默認參數隻能放到最後

可變參數:,其中var_arg是一個tuple,可以使用來遍曆

關鍵字參數:,關鍵字參數不限製傳入的參數個數和類型,會在函數內部組合成一個dict

參數組合:當定義為可以這樣調用:其中,args為tuple, kw為字典

遞歸函數,注意遞歸函數的溢出崩潰問題。python並沒有為尾遞歸做優化,所以還是會崩潰的。

高級特性

切片

array[0:3]:表示從第0個元素開始,取3個

array[-3:-1]:表示取倒數第三,第二個元素,-1表示最後一個。

array[::5]:表示每5個取一個元素

字符串也可以切片

迭代

迭代即使用:,array既可以是數組,也可以是字典或者字符串

判斷是否可以迭代,,判斷對象是否實現了Iterable接口

迭代dict:遍曆key。遍曆value。遍曆key和value

列表生成器

列表生成使用函數

混合生成使用簡寫for in 迭代。

也可以使用兩層循環,

生成器

如果你需要一組序列,但是太大,占用內存過多。那麼可以使用生成器,它是實時計算的列表。

將列表生成表達式的變為即可。

可以將一個函數變成一個生成器,隻需要添加語句即可,生成器會在遇到yield的時候返回對應結果,下次next從上次yield之後開始執行。

函數式編程

高階函數

函數可以賦值給變量,可以當成參數傳遞給函數

map:對每個列表中得元素作用一個函數,並返回。

reduce:將結果和下個元素傳給函數,最終返回一個結果。

filter:過濾器,使用方法跟map差不多,是返回結果為true的元素

sorted:排序,跟map差不多

返回函數

可以在函數中定義函數,並返回。就像一個變量一樣。

閉包:返回的函數可以使用定義函數內部的變量

匿名函數

匿名函數即lamdba表達式:lamdba 參數 : 表達式

裝飾器

概念:即在函數執行前後加一些邏輯不想管的代碼,比如log

實現

偏函數

簡單的講就是創建具有特定模式的函數別名,這個特定模式大概指的是設定好某些參數(默認參數),來達到簡寫的目的。

這樣就創建了一個專門轉化二進製的函數了。因為我們設定了默認參數

當參數太多需要簡化的時候就是用偏函數

模塊

模塊

一個py文件就是一個模塊,目錄就是包名

使用模塊

這是一個標準的模塊模板

模塊內部的私有變量和函數一律使用開頭,且不要在外部進行引用。

安裝第三方模塊

pip install 模塊名稱

使用

future可以把下個版本的新功能添加到當前版本

麵向對象編程

類和實例

定義類

構造方法args)`

訪問限製

使用雙下劃線開頭可以讓變量成為私有,外部無法訪問。也可以通過添加getter、setter來控製訪問操作。

繼承和多態

繼承就在定義的時候寫上父類的名稱,多態就覆蓋父類的方法。

獲取對象信息

使用判斷類型信息

使用isinstance()判斷繼承關係

使用dir()獲取對象的所有方法和屬性

麵向對象高級編程

使用slots

動態添加屬性:

動態添加方法:

為了防止胡亂添加屬性可以使用

使用@property

如下,定義了一個score的屬性

多重繼承

最好不要用多重繼承,用mixin

mixin其中概念,用類來提供一組相似功能。類似實現過的接口。

定製類

使用類似slots來定製一個類的行為。

str打印類時的信息

repr直接寫打印出來的信息

iter用於 迭代,返回下一個迭代對象,用於拿到循環的下一個值

getitem提供下標訪問

getattr當找不到這個屬性的時候會調用這個方法

call當使用這樣來把對象實例當成方法調用的時候,其實調用的就是。

可以使用來判斷一個東西是否可以被當成方法調用

使用元類

types():使用它來動態構建類,方法是

錯誤、調試和測試

錯誤

錯誤基類是

常見的錯誤類型

記錄錯誤,使用python模塊logging可以將錯誤調用對戰輸出出來

也可以自定義錯誤類型,方法是繼承自某個Exception,然後使用raise語句

直接寫可以把當前exception拋出,讓上層調用處理。

調試

斷言:

logging可以方便的輸出日誌,包括錯誤。

logging.info( info )。method可以是中的一個。

可以指定當前輸出的method,方法是指定當前輸出級別

pdb:

程序內部設置斷點:,在可能出錯的地方放置

還是使用IDE吧,下載https://www.jetbrains.com/pycharm/

最後更新:2017-10-08 16:44:10

  上一篇:go Python 的學習階段
  下一篇:go Python統計列表中的重複項出現的次數的方法