Python核心筆記(二)

2021-10-01 17:37:36 字數 4432 閱讀 1281

輸入:raw_input

輸出:print

列表元素: 類似陣列

列表切片操作[from:to] 擷取from 到to的列表元素(左閉右開)

字典元素:{} 鍵值對

**縮排:四個空格

開啟檔案:

handle=open(file_name,access_mode='r)

handle.close()

函式定義:

def dunction_name([arguments]):

「optional documentatiom string」

function_suite

類中的__init__()方法:

完成物件初始化工作,當乙個類被建立時,init()方法會自動被執行,類似構造器

self引數:

類例項自身引用,相當於物件導向程式設計語言中的this

#:注釋

\n:換行

\:繼續上一行

; :兩個語句連線在一行

: :將**塊的頭和體分開

不同縮排深度代表不同的**塊

python檔案以模組化的形式組織

多元賦值:x,y,z=1,2,3

變數名必須由字母跟下劃線組成,且區分大小寫

__name__系統變數:

1.模組化被匯入:__name__的值為模組的名字

2.模組被直接執行:__name__的值為』main

記憶體管理:

變數無須事先申明

變數無須指定型別

程式設計師不用擔心記憶體管理

變數名會被「**」

del語句能夠直接釋放資源

python物件的三個特性:身份,型別,值

type():獲取物件的型別

none: python的null物件

切片物件:sequence[起始索引:結素索引:步進值]

標準型別內建函式:

cmp(obj1, obj2) 比較 obj1 和 obj2,返回整形 i(>0;=0;<0)

repr(obj)或obj返回 obj 的字串表示

str(obj)返回 obj 適合可讀性好的字串表示

type(obj)返回 obj 的型別

str(),repr(),』』 三者的比較:

str():生成乙個物件的可讀性比較好的字串表示,對使用者友好

repr():對 python 比較友好

『』:效果跟 repr()一樣,建議不再使用

type()和 isinstance():

type(obj):返回 obj 的型別

isinstance(obj,obj_type):判斷 obj 是否為 obj_type 型別,返回布林值

可變型別:列表、字典

不可變型別:數字、字串、元組

不支援的型別:

char 或 byte:無

指標:無

int vs short vs long : 無區別

float vs double :無區別

長整型:用大寫的「l」表示

複數:虛數不能單獨存在。必須加上 0.0 的實數部分

由實數+虛數兩部分構成

實數跟虛數部分都是浮點型

虛數部分字尾是 j 或 j

複數屬性:

num.real 該複數的實數部分

num.imag 該複數的虛數部分

num.conjugate() 返回該複數的共軛複數

混合模式優先順序(轉化): complex > float > long > int

冪運算(**):

比左側運算元的一元運算子優先順序低,比右側運算元的一元運算子優先順序高。

eg: -3 ** 2 = -9 4.0 ** -1.0 = 0.25

位操作符:

只適用於整型

取反(~),安位與(&),或(|),異或(^),左移(<<),右移(>>)

負數當做正數的 2 進製補碼處理

num <<( 或 >> )n = num * ( 或 / )2 ** n

int(obj, base) : 返回 obj 數字的 base 進製數

pow() 和 **:雖然能完成相同的作用

pow() : 內建函式

** : 操作符

數值運算內建函式:

abs(num) num 的絕對值

coerce(num1, num2)轉化為同一型別,返回乙個元組

divmod(num1, num2)返回元組(num1/num2, num1%num2)

pow(num1, num2, mod=1) 取 num1 的 num2 次方,若有 mod,則對其再取餘

round(flt, ndig=1)對浮點型 flt 進行四捨五入,保留 ndig 位小數

僅適用於整型的內建函式:

hex(num)將 num 轉化為十六進製制,並以字串返回

otc(num)將 num 轉化為八進位制,並以字串返回

chr(num)返回 num 的 ascii 值,範圍:0 <= num <= 255

「true」和「false」嚴格區分大小寫!且分別對應「1」和「0」。

字串型別同樣也是不可變的,當你要改變乙個字串的時候就必須通過建立乙個新的同名的字串來取代它。

三引號(』』』或者」」」):

允許乙個字串跨多行,字串中可以包含換行符,製表符及其他特殊字元。

ascii 碼:每個英文本元都是以 7 位二進位制數的方式存放在計算機內,範圍是 32~126。

unicode 通過使用乙個或多個位元組來表示乙個字元的方法突破了 ascii 的限制,可以表示超過90000 個字元。

ascii 字串 – stringtype 型別

unicode 字串 – unicodetype 型別

預設所有字面上的字串都是 ascii 編碼,』u』字首宣告 unicode 編碼。

codec 是 coder/decoder 的首寫字母組合。

unicode 應用的規則:

程式**現字串時前面一定要加個』u』

不要用 str()函式,用 unicode()代替

不要用過時的 string 模組

不到必須時不要在你的程式裡編譯碼 unicode 字元。只在你寫入檔案或者資料庫或者網路時,才呼叫 encode()編碼,相應地,只在你需要把資料讀回來的時候才呼叫 decode()函式解碼

python 標準庫中絕大部分模組都是相容 unicode 的,除了 pickle 模組只支援ascii。

python 字串不是通過 nul 或者』\0』來結束的,它除了你定義的東西,沒有別的。

並非呼叫乙個方法就會返回乙個值。

那些可以改變物件值的可變物件的方法是沒有返回值的。如:sort(),extend()等。

列表跟元組是兩個非常相似的序列型別,之所以要保留二者是因為在某些情況下,其中一種型別要優於使用另一種型別。

list()跟 tuple()函式可以用乙個列表來建立乙個元組,反之亦然。

字典是 python 中唯一的對映型別。

字典:dict1 = ,『name』:』earth』,』port』:80-

for key in dict1.keys():

… print 『key=%s, value=%s』% (key,dict1*key+)

對映型別內建函式:

dict.clear() 刪除字典中的所有元素

dict.fromkeys(seq, val=none) 返回乙個新字典,seq 為鍵,val 為值

dict.get(key, default=none)返回字典中 key 的值,若無此鍵則返default

dict.has_key(key)是否存在 key 鍵,返回布林值

dict.items() 返回乙個包括字典中鍵值對元組的列表

dict.keys() 返回乙個字典中的鍵的列表

dict.values() 返回乙個包含字典中所有值的列表

dict.update(dict2) 將字典 dict2 的鍵值對新增到字典 dict 中去

不允許乙個鍵對應多個值。鍵必須是可雜湊的物件。像列表和字典這樣的可變型別,由於它們不是可雜湊的,所以不能作為鍵

集合型別:現已成為 python 的基本資料型別

兩種型別:可變集合(set)和不可變集合(frozenset)

可用 set()和 frozenset()來分別建立可變集合跟不可變集合

適用於所以集合型別的內建方法:

s.issubset(t) 判斷 s 是否是 t 的子集,返回布林值

s.issuperset(t) 判斷 s 是否是 t 的超集,返回布林值

s.union(t) 返回新集合,s 跟 t 的並集

s.intersetion(t) 返回新集合,s 跟 t 的交集

s.difference(t) 返回新集合,其成員是 s 的成員,但不是 t 的成員

《python核心程式設計》學習筆記(二) re

1.match 函式從字串的開始部分開始匹配,匹配成功,則返回匹配物件 匹配不成功,則返回none。m re.match foo on the table food m none2.search 函式用它的字串引數,在任意位置對給定的正規表示式模式 搜尋第一次出現的匹配情況。如果搜尋到成功的匹配,就...

python核心程式設計筆記

1 賦值並不是直接將乙個值賦給乙個變數,儘管你可能根據其它語言程式設計經驗認為應該如此。在python 語言中,物件是通過引用傳遞的。在賦值時,不管這個物件是新建立的,還是乙個已經存在的,都是將該物件的引用 並不是值 賦值給變數。一切皆為物件。python 的賦值語句不會返回值,但可以鏈式賦值。x ...

Python核心程式設計 筆記

第13章 物件導向程式設計 object是所有類之母。如果你的類沒有繼承任何其它父類,object將作為預設的父類。類既可 很簡單,也可以很複雜,這全憑你的需要。最簡單的情況,類僅用作命名空間,意味著,你把資料儲存在變數中,對他們按命名空間進行分級,使他們處於相同的關係空間中。類成員可以動態新增,這...