Python知識(shí)點(diǎn)匯總(一)
1,、Python的兩種編程?式:交互式(隨輸隨運(yùn)?)和?件式(主要?式,;批量運(yùn)?出結(jié)果)
2、?切皆對(duì)象,,每個(gè)對(duì)象由標(biāo)識(shí)(id()),、類型(type())和值(print())標(biāo)識(shí)。
3,、Python采? 基于值的內(nèi)存管理 ,不同變量賦值為同?個(gè)值,,ID?樣,但是只適?范圍在-5?256的整數(shù)和短字符串,。
4,、內(nèi)置函數(shù)(BIF),68個(gè),,查看?式:dir(builtins) 分類: 數(shù)值 數(shù)據(jù)類型:int,float,complex,bool,decimal,fractions 序列 數(shù)據(jù)類型:字符串(string),、列表(list)、元祖(tuple),、bytes,、bytearray 集合 數(shù)據(jù)類型:set,、frozenset 字典 數(shù)據(jù)類型:dict 不可變的數(shù)據(jù)類型:數(shù)值Number、字符串String,、元祖Tuple 可變的數(shù)據(jù)類型:列表List,、字典Dict、集合Set 5,、?進(jìn)制:0b/0B開(kāi)頭 ?進(jìn)制:0o/0O開(kāi)頭 ?六進(jìn)制;0x/0X開(kāi)頭
6,、數(shù)值運(yùn)算函數(shù): abs(x):絕對(duì)值 ;divmod(x,y):商余 ,;pow(x,y,z):冪余((x**y)%z) ,;round(x,d):四舍五?d位 ;max/min ,; int(x) /float(x) /complex(x)
7,、math庫(kù): 常數(shù):math.pi ;math.fabs(x):絕對(duì)值 ,;math.fmod(x,y):x%y ,;math.ceil(x):向上取整,返回不?于x的最?整數(shù) ,; math.floor(x):向下取整,,返回不?于x的最?整數(shù) ;math.modf(x):返回x的?數(shù)和整數(shù)部分 ,;math.trunc(x):返回x的整數(shù)部分
8,、浮點(diǎn)數(shù)類型:0.1 + 0.2不等于 0.3 ,浮點(diǎn)數(shù)有?尾數(shù),??词欠竦扔诳梢?round()函數(shù)幫助去?尾數(shù)。
9,、類型間混合運(yùn)算: 整數(shù) -> 浮點(diǎn)數(shù) -> 復(fù)數(shù)
10,、布爾數(shù)據(jù)類型(bool)包含兩個(gè)值->True(真–1)或假(False–0)。 如果表達(dá)式的結(jié)果為數(shù)值類型的0,、空字符串(“”),、空元祖()、空列表[],、空字典{},,則其布爾值為false(假),否則為 true(真),。
11,、邏輯運(yùn)算符:and、or,、not a and b等于a if not a else b ,; a or b 等于a if a else b,。 not?定會(huì)返回true或false;and和or不?定,。
12,、運(yùn)算優(yōu)先級(jí)(由?到低) ** (指數(shù))> +x.-x(正負(fù)號(hào))> *./.%(乘。除,。取余)> +. -(加,。減)> &(與)> ^(或)> \(?)>?較??> not(?)> and(與)>or(或)> lambda表達(dá)式
13、序列型數(shù)據(jù)
(1)序列的索引s[i]:如果索引下標(biāo)越界,,導(dǎo)致IndexError,;如果索引下標(biāo)不是整數(shù),導(dǎo)致TypeError,。
(2)序列的切?(截取序列s的?部分):顧頭不顧尾,。
(3)序列的加:x + y:連接兩個(gè)序列; 序列的乘(復(fù)制):x * n:復(fù)制n次序列x ,;
(4)判斷?串:x in s :返回True/False ; s.count(x):返回x在s中出現(xiàn)的次數(shù) ,; s.index(x,i,j):返回x在s(范圍[i,j])中第?次出現(xiàn) 的索引位置,。
(5)序列的排序:sorted(s, key=None,reverse=False)。reverse為false是為升序,,為true時(shí)為倒序,。返回結(jié)果為?個(gè)列表。 (6)序列的拆封賦值:當(dāng)變量個(gè)數(shù)和序列長(zhǎng)度相等時(shí),,??對(duì)應(yīng)賦值,。如a,b = (1,2)即a = 1,b=2。不等則導(dǎo)致ValueError,?;蚴?變 量(將多個(gè)值作為整體賦給變量)或使?臨時(shí)變量'_’
14、字符串類型 ?較字符ASCII碼值的??:空格<數(shù)字<?寫字母<?寫字母 Unicode變字符:chr(u) ,;字符變Unicode:ord(x) format()?法的格式控制: (1)槽{序號(hào)}的使? (2){參數(shù)序號(hào):格式控制標(biāo)記},,格式控制標(biāo)記包括:填充、對(duì)齊(分別?<,、>,、^表?左、右和居中對(duì)齊),、寬度,、精度、類型 (b=?進(jìn)制,,c=Unicode,d=?進(jìn)制,,o=?進(jìn)制,,xX=?六進(jìn)制)。
字符串的類型判斷: str.isdigit()是否全為數(shù)字(0-9),; str.isalpha()是否全為字母,; str.isal num()是否全為數(shù)字或字母; str.isspace()是否是空?(空 格,、制表符,、換?符等); str.isprintable()是否可打?。崭窈蜎](méi)有東西是可以被打印的),; str.isidentifier()是否滿?標(biāo)識(shí)符定義規(guī) 則(字母或下劃線開(kāi)頭,只含數(shù)字,、字母和下劃線)
??寫轉(zhuǎn)換: str.capitaiize():轉(zhuǎn)換為?字母?寫,,其余?寫;str.title()各單詞?字母?寫,。 對(duì)齊:居中str.center(長(zhǎng)度,,填充物) ;左對(duì)齊:ljust ,;右對(duì)齊:rjust,。 填充:str.zfill(長(zhǎng)度)相當(dāng)于右對(duì)齊,前?補(bǔ)0,。如果str前有正負(fù)號(hào),,則正負(fù)號(hào)也算長(zhǎng)度,在正負(fù)號(hào)之后填充,。 移除:左右兩邊:str.strip(字符chars) ,; 左邊:str.lstrip() ;右邊;rstrip() 字符串的查找:find和index str.find(s):從左?右查找str中是否含s,有則返回第?次出現(xiàn)s的索引位置,,否則返回-1 str.index(x):從左?右查找是否含有x,,有則返回第?次出現(xiàn)的索引位置,沒(méi)有則拋出ValueError str.rfind()和str.rindex()就是從右?左查找,。 字符串的替換:S.replace(old,new,count),。將S中的old替換為new,如果給定count,,則只替換前count個(gè)old?串,。 拆分/分割: S.split(分隔符sep,分割次數(shù)maxsplit), maxsplit = -1或不指定時(shí),會(huì)從左向右搜索完整個(gè)字符串,。S.rsplit()是從右往左,。?成列表。 S.partition(sep),,S.rpartition(sep)(從右往左搜索),。搜索S中的?串sep,,并從第?個(gè)sep處分割,返回?個(gè)包含三個(gè)元素的元組 – >(sep左邊的部分,,sep,,sep右邊的部分)。如果搜索不到sep,,則返回中有兩個(gè)元素為空,,partition是后兩個(gè)元素為空,rpartition 是前兩個(gè)為空,。 連接組合: S.join(字符串對(duì)象),。 當(dāng)對(duì)象為字符串字典時(shí),結(jié)果是鍵的連接,。
15,、列表類型 列表list是可變對(duì)象,則對(duì)其增刪改查不會(huì)改變其的id,。除了list.copy(). ?法:
(1)添加: list.appand(x):將元素x添加到列表的尾部,; list.extend(L):將列表L中所有元素添加到列表的尾部; list.insert(index,x):在列表指定位置index處添加元素x,;
(2)刪除: list.remove(x):刪除列表中?次出現(xiàn)的元素x,; list.pop(kediedai [index] ):刪除并返回指定位置的元素(可以理解為挖取出),list為空就拋IndexError異常,; list.clear():刪除列表中所有元素,但保留列表對(duì)象,。
(3)排序: list.reverse():倒序,; list.sort():排序(正或倒);
(4)其他: list.index(x):返回值為x?次出現(xiàn)的下標(biāo),; list.count(x):返回x的出現(xiàn)總次數(shù),; list.copy() :返回列表對(duì)象的淺拷貝。很厲害??!它可以改變列表的ID! 淺拷貝——只拷貝?層,。如果拷貝對(duì)象只有?層,,那么同 b = a[:] ,兩個(gè)變量相互獨(dú)?的,。但如果拷貝對(duì)象只有?層,,就會(huì)有影響, 會(huì)跟著改變,。(詳見(jiàn)例題) ??!列表推導(dǎo)式: [新元素表達(dá)式 for 臨時(shí)變量 in 可迭代對(duì)象 if 條件表達(dá)式]
16、集合類型 集合中的元素沒(méi)有順序,,且不重復(fù),。 集合set是可變的,??括號(hào)表?,。 但是{}表?空字典,;set()表?空集合,?set()創(chuàng)建集合時(shí),,會(huì)將元素?個(gè)?個(gè)拆開(kāi),,如’hello’變成’h’,'e’,'l’,'l’,'o’。 集合中元素要是固定數(shù)據(jù)類型:整數(shù),、浮點(diǎn)數(shù),、字符串、元組等,。不可為可變的列表,、字典、集合,。 利?集合過(guò)濾掉重復(fù)的元素,。 4種基本操作:交(&)、并(|),、差(-),、補(bǔ)(^) S.add() ;S.clear() ;S.copy() ; S.remove() ;len(S) ;x (not)in S ; S.pop():隨機(jī)返回S中的?個(gè)元素,如果S為空,,產(chǎn)?KeyError.(區(qū)分list.pop([index])) 特有的:S.discard(X),;如果x在S中,移除x,,不在,,不報(bào)錯(cuò)。 主要三??途:成員關(guān)系測(cè)試,、元素去重,、刪除數(shù)據(jù)項(xiàng)。
17,、字典類型(映射) {建(key):值(value)},。 鍵不能重復(fù),且是不可變對(duì)象,。值可變,。元素沒(méi)有順序。
創(chuàng)建?個(gè)空字典:dict() ;
創(chuàng)建字典:dict('a’=1,'b’=2)/dict('a’:1,'b’:2)/dict(('a’,1),('b’,2));
查找值:Dict[key] ,;
修改鍵值:dict[key] = new_value ,;
增添新鍵值:dict[new_key] = new_value .
D.keys():返回所有鍵的列表,如dict_keys(['a’, 'b’, 'c’]);
D.values():返回所有值的列表,如dict_values([1, 2, 3]),;
D.items():返回所有的鍵值對(duì)的列表,如dict_items([('a’, 1), ('b’, 2), ('c’,3)]),;
D.get(key,v):鍵存在則返回相應(yīng)值,否則返回None(?定義了v時(shí),,返回v的內(nèi)容);
D.pop(key.value):鍵存在則返回相應(yīng)值,,同時(shí)刪除鍵值對(duì),否則返None,;
D.popitem():隨機(jī)取出?個(gè)鍵值對(duì),,以元組(key,value)形式返回,; D.setdefault(k,v):如果鍵k存在,,返回對(duì)應(yīng)值,否則添加項(xiàng)?k = v,v默認(rèn)為None,;
D.update(dict):更新或添加鍵值對(duì),; D.clear():刪除所有的鍵值對(duì); del.D[key]:刪除key對(duì)應(yīng)的鍵值對(duì),。如果key不存在,,則拋出KeyError。 遍歷: for 變量名 in 字典名:
18,、可變與不可變(關(guān)于值) 可變:列表(有序),、集合(?序)、字典(?序) 不可變:字符串(有序),、元組(有序) Python是基于值的內(nèi)存管理?式,,舉例:a=[1,2,3],b=[1,2,3],a==b成?,。 但是id(a)與id(b)不相等,id(a[0])==id(b[0])成?,??偨Y(jié)就 是關(guān)乎值的就相等 什么叫可變?即值是可變的,,但id是固定不變的,。例如可變的列表,修改列表L中的?個(gè)元素的值,,列表L的id是不變的,。 不管是可變還是不可變的序列類型:
(1)分?必定產(chǎn)?新的序列;
(2)“+”號(hào)在等號(hào)右邊(L=L+[i]),必定產(chǎn)?新的序列,。然后將新的序列地址賦予給等號(hào)左邊的變量,。(每?次執(zhí)?時(shí)都會(huì)將原列表復(fù) 制?次,L指向新列表,,并在新列表中加?新元素) 對(duì)三種列表添加?法進(jìn)?總結(jié):
(1)L=L+[i]在每?次執(zhí)?時(shí)都會(huì)將原列表復(fù)制?次,,L指向新列表,并在新列表中加?新元素,。
(2)L.append(i)只是將新元素直接添加到原列表中,,不會(huì)產(chǎn)?新列表。 (3)L+=[i]的執(zhí)?效果和L.append(i)類似,,也是在原列表中直接添加元素,,不會(huì)復(fù)制原列表。 b = a VS b = a[:] b = a時(shí),,b就是跟著a變化,,并且a與b的id?樣。b = a[:]時(shí),,b與a是獨(dú)?的整體,id就不同,,只不過(guò)指向了同?個(gè)值,。對(duì)a做修改(增刪改 查),對(duì)b沒(méi)有影響,。
19,、程序的三種基本結(jié)構(gòu): 順序結(jié)構(gòu)、·分?結(jié)構(gòu)(if-else,、elif),、·循環(huán)結(jié)構(gòu)(遍歷:for…in、條件:while,。循環(huán)控制:break/continue),。 異常值處理:try-except。 ?分?結(jié)構(gòu)簡(jiǎn)單語(yǔ)法:表達(dá)式1 if 條件 else 表達(dá)式2 循環(huán)結(jié)構(gòu)分遍歷循環(huán)(for)和?限循環(huán)(while): 遍歷循環(huán):for 循環(huán)變量 in 遍歷結(jié)構(gòu):語(yǔ)句塊(從遍歷結(jié)構(gòu)逐?提取元素,,放在循環(huán)變量中,,對(duì)每?個(gè)提取出的元素執(zhí)??次語(yǔ)句塊。) ?限循環(huán):while 條件:語(yǔ)句塊,。判斷條件為True就?直循環(huán),為false時(shí)魂環(huán)結(jié)束,,執(zhí)?與while同級(jí)別縮進(jìn)的后續(xù)語(yǔ)句,。 break?于結(jié)束當(dāng)前循環(huán),如果有兩層循環(huán),,break?于跳出最內(nèi)層for或while循環(huán),脫離該循環(huán)后程序從循環(huán)后代碼繼續(xù)執(zhí)?,; continue?來(lái)結(jié)束當(dāng)前循環(huán)的當(dāng)次循環(huán)過(guò)程,即跳出循環(huán)體中下?尚未執(zhí)?的語(yǔ)句,,但不跳出當(dāng)前循環(huán)。 當(dāng)有輸?要求時(shí),,可運(yùn)?異常值處理try:except:
20,、函數(shù) (1)形參與實(shí)參:定義函數(shù)時(shí)的參數(shù)是形參,調(diào)?函數(shù)時(shí)的參數(shù)是實(shí)參,。 (2)參數(shù)傳遞的?法:位置參數(shù),、默認(rèn)值參數(shù)、關(guān)鍵字參數(shù),、命名關(guān)鍵字參數(shù),。。,。 位置參數(shù):按位置順序傳遞參數(shù)值,,位置參數(shù)要在所有參數(shù)之前,是第?個(gè)參數(shù),; 關(guān)鍵字參數(shù):關(guān)鍵字參數(shù)就是在調(diào)?函數(shù),,傳?實(shí)參時(shí)指定形參的變量名,。關(guān)鍵字不?遵守位置的對(duì)應(yīng)關(guān)系,。參數(shù)之間的順序可以任意調(diào) 整。關(guān)鍵字傳遞可以和位置傳遞混?,。但位置參數(shù)要在關(guān)鍵字參數(shù)之前,。舉例: def hello(name,age = 11,gender = 'F’):(age = 11,gender = 'F’就是關(guān)鍵字參數(shù)) 。 舉例:def hello(name,age = 11,gender = 'F’):(age = 11,gender = 'F’就是關(guān)鍵字參數(shù)) 默認(rèn)值參數(shù):定義參數(shù)時(shí)已經(jīng)給定值,,?般參數(shù)為不可變對(duì)象,,(如果為可變的空列表,可?于裝位置參數(shù)),; 可變數(shù)量參數(shù): *args、**kw 帶有星號(hào) * 的可變參數(shù)只能出現(xiàn)在參數(shù)列表的后?,。調(diào)?時(shí),, *參數(shù) 被當(dāng)作元組類型傳遞到函數(shù)中。(如: def func(*args): -> func(10,20) ) 帶雙星號(hào)( ** )的參數(shù),在使?時(shí)必須指定參數(shù)值,,使?key=value這種形式,,只能出現(xiàn)在參數(shù)列表的最后。調(diào)?時(shí),, **kw 后的那些參數(shù)被 當(dāng)作字典類型傳遞到函數(shù)中,。(如: def func(**kw): -> func(a=10,b=20) ) 強(qiáng)制命名參數(shù):參數(shù)帶星號(hào)或者就是?個(gè)星號(hào)( def f(c或,a,b,c) ),強(qiáng)制命令參數(shù) *c 的含義是它后?的參數(shù)必須?實(shí)名調(diào)?,,即必須? a = … , b = … 來(lái)調(diào)?,,不能只寫值。 Python中只有函數(shù),,函數(shù)是有返回值的,,**如果沒(méi)有return,默認(rèn)返回None,。**return返回多個(gè)值時(shí),,多個(gè)值以元組形式保存。
21,、?較
(1)list.sort()與全局sorted() list.sort(key = None,reverse = False)是列表內(nèi)置排序?法,。但其返回值為None(x.sort()的結(jié)果、print(x.sort()),、x = x.sort()后x 的結(jié)果都是None),只有當(dāng)?字說(shuō)“執(zhí)?語(yǔ)句x.sort(),,x的值為”,x.sort()作?的結(jié)果,,需要通過(guò)打印被作?的列表才可以查看結(jié) 果,。true是倒序,false是正序,。 sorted():Python內(nèi)置?法,。返回新的列表。 (2)list.reverse()和reversed() list.reverse()返回的是None,,其作?的結(jié)果,,需要通過(guò)打印被作?的列表才可以查看結(jié)果。 reversed():內(nèi)置?法,。經(jīng)過(guò)reversed()作?之后,,返回的是?個(gè)吧序列值經(jīng)過(guò)倒序的迭代器,所以,,需要通過(guò)遍歷或list,、tuple或 next()?法,才能獲得作?后的值,。
(3)字符串的查找:find和index str.find(s):從左?右查找str中是否含s,有則返回第?次出現(xiàn)s的索引位置,,否則返回-1 str.index(x):從左?右查找是否含有x,,有則返回第?次出現(xiàn)的索引位置,沒(méi)有則拋出ValueError str.rfind()和str.rindex()就是從右?左查找,。
22,、函數(shù)變量的作?域 (1)局部變量、全局變量,、global global:?于在函數(shù)中直接修改全局變量的值,。 (2)內(nèi)嵌函數(shù) 內(nèi)嵌函數(shù)的作?域僅限其所在的函數(shù)體內(nèi)。如果要在內(nèi)部函數(shù)中修改外部函數(shù)中的局部變量的值,,使?nonlocal關(guān)鍵字,。
Python知識(shí)點(diǎn)匯總(二)
|