一.基礎(chǔ)語法
1. Python中默認(rèn)的編碼格式是 ASCII 格式撞叨,在沒修改編碼格式時無法正確打印漢字金踪。 在頭部加上
# -*- coding: UTF-8 -*-? 或者??# coding=utf-8? 就可以了? ? ? ? (注意:# coding=utf-8?的?=?號兩邊不要空格。)
2. python用縮進(jìn)來寫模塊 同一個模塊縮進(jìn)必須相同? 統(tǒng)一語句換行時要加“\”? ? ? ?num?=? + \? ? ?語句中包含 [], {} 或 () 括號就不需要使用多行連接符
3. # 用于單行注釋? ?多行注釋用三個單引號或三個雙引號? ?"""? ?換行 注釋內(nèi)容 換行? '''''
4.可以在同一行中使用多條語句牵敷,語句之間使用分號分號分割? ? name = "KD"; age = "32"; score = "88"
5.變量賦值? 可以連續(xù)賦值? ??a = b = c = 1;? ??a, b, c = 1, 2, "john";
6.Python有五個標(biāo)準(zhǔn)的數(shù)據(jù)類型? ??Numbers(數(shù)字)??String(字符串)??List(列表)??Tuple(元組)??Dictionary(字典)? ? var1 = 1L? ? 賦值(L代表長整型)? ?del var1 刪除變量
7. 字符數(shù)下表是從0開始到長度減1? ? s = “1234567”? ?則 s[1:5]等于 “2345”? ?(包含前邊索引 不包含后邊索引)? 字符串用+來連接 * 星號 后邊加數(shù)字 則可以多次輸出? ?s *2 =?“1234567”? + “1234567” 『怼= “12345671234567”
8.??列表 List 用?[ ]?標(biāo)識? mylist = [1,2,3,,4,5]
9. 元組?Tuple 用()標(biāo)識? 里面元素不能重新賦值? 也不能刪除 所以沒有特殊情況 就用列表吧? ?mytuple1 = (1,2,3,4,5)? ?元組中只包含一個元素時,需要在元素后面添加逗號? ? mytuple2 = (1,)
10.?字典 dictionary 用{}標(biāo)識? 鍵值對形式存在?字典的每個鍵值?key=>value?對用冒號?:?分割枷餐,每個鍵值對之間用逗號?,?分割? ? mydictionary = {"name" : "KD",? "score" :"88"}? ? ? ? ?mydictionary.keys()??mydictionary.values()? 分別輸出所有的鍵和值? ? 鍵一般是唯一的靶瘸,如果重復(fù)最后的一個鍵值對會替換前面的,值不需要唯一? ? 鍵可以用數(shù)字毛肋,字符串或元組充當(dāng)怨咪,用列表就不行? 值用什么都行
11.運算符?**:? ?a**b? a的b次冪? ? ?運算符 //:? ?除完后向下取整? ?9 // 4 = 2? ? ?a^b = 0011 0001? ?“^”異或運算符? 相同取0 不同取1? ? ?例如 a = 11000101? ?b = 01010011? ? c =?a^b? ?則c = 10010010
12.邏輯運算符? ??and??布爾"與" - 如果 x 為 False,x and y 返回 False润匙,否則它返回 y 的計算值? ? or?布爾"或" - 如果 x 是非 0惊暴,它返回 x 的值,否則它返回 y 的計算值? ? not?布爾"非" - 如果 x 為 True趁桃,返回 False 辽话。如果 x 為 False,它返回 True
13.成員運算符? ?in 和 not in? ? ? ?list = [1, 2, 3, 4 ,5];? ? ? ?param = 2? ? ? ? ?if (param not in list): print "not include" else: print include
14.身份運算符? ?is 和 not is? ? ?判斷兩個標(biāo)識符是否引用自一個對象(是否在同一內(nèi)存空間)? == 等號是判斷值是否相同? ? ? ? a = 20? ? b= 20? ??if ( a is b ): print “111” else: print “222”? ? ? ? ?ab兩值相同
15.條件語句? ?符號是?if? ?elif? ??else? ? ? ? ? 判斷方式?非0和非空(null)值為true卫病,0 或者 null為false
16. 循環(huán)語句? ?包括for循環(huán)和while循環(huán)? 循環(huán)控制語句有break油啤,continue和pass? ?其中pass是空語句,是為了保持程序結(jié)構(gòu)的完整性? ? 定義一個空函數(shù)時 需要用pass來占位? 不能空著 比如? ?def function(): pass
17.格式化字符串? ? ??print "My name is %s and weight is %d kg!" % ('Zara', 21)
18.三引號? ?'''? 字符串賦值的時候可以使用 中間的字符串可以是多行? 方便長字符串的書寫和閱讀
19.函數(shù)? ? ??def printme( str ):? ? print str? return?str? ? ? ? 參數(shù)?strings, tuples, 和 numbers 是不可更改的對象? ?當(dāng)參數(shù)傳入在函數(shù)中修改不會改變原來的值? ? 其他類型作為參數(shù)傳入函數(shù)? 則可在函數(shù)中對其修改蟀苛,相當(dāng)于傳入內(nèi)存地址益咬,只有當(dāng)形參有默認(rèn)值的時候可以省略實參,可以用關(guān)鍵字參數(shù)傳參帜平,這時可以順序不同幽告,例如:printinfo( age=50, name="miki" ),不定長參數(shù)可以傳入不定長的數(shù)據(jù)參數(shù)裆甩,也可以不傳冗锁,如果想在函數(shù)內(nèi)使用全區(qū)變量,則要事先聲明使用的是全局變量嗤栓,要不然會默認(rèn)為局部變量冻河,聲明為global箍邮,例如global num
20. 匿名函數(shù)(lambda函數(shù))??sum = lambda arg1, arg2: arg1 + arg2? ? ? print(sum( 10, 20 ))值為30
二.?模塊
1.一個.py文件可以看成一個模塊,例如example.py叨叙,里面可以定義函數(shù)锭弊,變量等,其他文件使用時需要導(dǎo)入? import example擂错,調(diào)用內(nèi)容使用example.函數(shù)名或變量名
2.dir() 函數(shù)一個排好序的字符串列表味滞,內(nèi)容是一個模塊里定義過的名字,例如:import math钮呀,content = dir(math)剑鞍,print content 就會累出math模塊的函數(shù)名稱等信息
三.讀取鍵盤輸入??
1.?raw_input 例如:str = raw_input("請輸入:") ,? print "你輸入的內(nèi)容是: ", str
2.input函數(shù)? 和raw_input函數(shù)基本類似行楞,不過input可以輸入表達(dá)式,結(jié)果會返回表達(dá)式的值
3.打開文件? ?fo = open("foo.txt", "w")? ?第二個參數(shù)是何種方式打開土匀,如下圖1
操作完后用fo.close()來關(guān)閉文件子房,fo.flush()來刷新文件,立即寫入緩沖區(qū)
4.os模塊 提供了一些對文件操作的函數(shù) 就轧,例如? import os证杭,os.remove("test.txt")
5.os.mkdir("newdir")? ?創(chuàng)建新目錄“newdir”,rmdir()則可以刪除目錄妒御,os.rmdir('newdir')
四.異常處理
1.try:-------?except:------ else:--------? ? ?發(fā)生異常時except可以捕獲解愤,可以指定特定的except,例如:except IOError: 乎莉,可以把捕獲異乘徒玻看成if------ elseif------- else------- 語句
五.類?
1.定義類?class Parent:
2.子類? ?class Child(Parent):
3.私有屬性,兩個下劃線開頭惋啃,例如:__age哼鬓,內(nèi)部調(diào)用需要加self,self.__age边灭,外部訪問可以使用object._className__attrName訪問异希,例如:role._Role__age訪問
4.公有屬性,不需要加下劃線绒瘦,可以直接類名.變量名訪問称簿,例如:Role.name
5.?以單下劃線開頭的表示的是 protected 類型的變量,即保護(hù)類型只能允許其本身與子類進(jìn)行訪問惰帽,例如:_dest
六.正則表達(dá)式
1.re.match憨降,re.match 嘗試從字符串的起始位置匹配一個模式,如果不是起始位置匹配成功的話该酗,match()就返回none券册,模式如下re.match(pattern, string, flags=0),第一個參數(shù)是正則表達(dá)式,第二個參數(shù)是要匹配的字符串烁焙,第三個參數(shù)flags是匹配模式
2.re.search航邢,掃描整個字符串并返回第一個成功的匹配。和re.match不同在于可以不再起始匹配骄蝇,也會返回
3.re.sub膳殷,文本替換,re.sub(pattern, repl, string, count=0, flags=0)九火,其中repl是要替換的字符串赚窃,也可為一個函數(shù),string為原始的字符串岔激,count為替換的字符數(shù)量
4.re.compile勒极,compile 函數(shù)用于編譯正則表達(dá)式,生成一個正則表達(dá)式( Pattern )對象虑鼎,供 match() 和 search() 這兩個函數(shù)使用pattern = re.compile(r'\d+')辱匿,m = pattern.match('one12twothree34four')
5.findall,在字符串中找到正則表達(dá)式所匹配的所有子串炫彩,并返回一個列表匾七,如果沒有找到匹配的,則返回空列表江兢,pattern = re.compile(r'\d+')昨忆,result = pattern.findall('runoob 123 google 456')
6.re.finditer,和 findall 類似杉允,在字符串中找到正則表達(dá)式所匹配的所有子串邑贴,并把它們作為一個迭代器返回,it = re.finditer(r"\d+","12a32bc43jf3") 叔磷,for match in it: print (match.group() )
7.re.split痢缎,split 方法按照能夠匹配的子串將字符串分割后返回列表,
8世澜,group() 返回被 RE 匹配的字符串独旷,start()?返回匹配開始的位置,end()?返回匹配結(jié)束的位置寥裂,span()?返回一個元組包含匹配 (開始,結(jié)束) 的位置
9.\d嵌洼,匹配一個數(shù)字字符,等價于 [0-9]封恰。\D麻养,匹配一個非數(shù)字字符,等價于 [^0-9]诺舔。\s鳖昌,匹配任何空白字符备畦,包括空格、制表符许昨、換頁符等等懂盐。等價于 [ \f\n\r\t\v]。\S匹配任何非空白字符糕档,等價于 [^ \f\n\r\t\v]莉恼。\w,匹配包括下劃線的任何單詞字符速那。等價于'[A-Za-z0-9_]'俐银。\W,匹配任何非單詞字符端仰。等價于 '[^A-Za-z0-9_]'捶惜。.(句號),匹配除 "\n" 之外的任何單個字符荔烧。要匹配包括 '\n' 在內(nèi)的任何字符吱七,請使用象 '[.\n]' 的模式。