python學(xué)習(xí)筆記

python學(xué)習(xí)筆記

1蒋搜、基礎(chǔ)知識

數(shù)據(jù)類型:integer(int) string (str) float (浮點數(shù)) long? list? dictionary? ? ? tuple? set boolean

變量=定義的變量可以不確定變量類型,只有使用的時候,才會確定變量類型(java 不同)

命名規(guī)范:1叠国、不能使用數(shù)字開頭,2蔓姚、不能過長(一般可以根據(jù)內(nèi)存長度確定惕耕,所以無限制) 3、不能包含除——之外的特殊字符

4蜜自、應(yīng)該有意義(方便閱讀) 5菩貌、用下劃線分割多個單詞的命名(可讀性,不強(qiáng)制) 6重荠、一般變量名全部小寫箭阶,作為常量使用時,才全部大寫

7戈鲁、避免使用小寫的l和大寫 的o(可讀性要求仇参,不強(qiáng)制)

運算符:

支持加法、減法婆殿、乘法诈乒、除法、取反婆芦、絕對值怕磨、求冪(math方法有其他運算)

運算的優(yōu)先級(按照數(shù)學(xué)元算進(jìn)行)

邏輯

1、if else? ? 真假的判斷:integer 如果值為0消约,float值為0.0 long的值為0肠鲫,string的值為"",list的值為[],dictionary的值為{}或粮,tuple的值為()則為False,其余為真

2导饲、循環(huán) for? while

range()函數(shù),生成數(shù)字氯材。range(10)-----生成 [0,1,2,3,4,5,6,7,8,9]

range(1,4)--- 生成[1,2,3]

range(1,6,2)--生成[1,3,5]

for 循環(huán)? for i in range(3):

語句:

遍歷列表? for cat in cats:

語句:

繼續(xù)執(zhí)行下一個遍歷? continue? ? 退出循環(huán)? break 渣锦;

for語句在執(zhí)行完遍歷之后。變量的值為最后一次遍歷的值氢哮。

while 條件:

語句

無限循環(huán)需要在合適的位置設(shè)置break語句泡挺,不然,程序會一直執(zhí)行下去命浴;

3娄猫、順序--------

字符串的使用

1贱除、打印:print 語句會自動換行媳溺,如果不想換行月幌,則在print語句結(jié)束時,輸入","就不會換行了

2悬蔽、string的方法 len()---自符串長度函數(shù)? ? str.upper-------把所有字母轉(zhuǎn)換成大寫扯躺;str.lower----全部小寫

str.capitalize()? 字符串首字母大寫,其余小寫? str.title()----首字母以及每個空格或者標(biāo)點符號后的字母轉(zhuǎn)換成大寫蝎困,其他字母小寫

str.is_alpha()-------------檢查字符串是否全部有字母組成录语,str.is_digit()------檢查字符串是否全部有數(shù)字組成

str.strip() 去掉字符串中開頭或者結(jié)尾的某個值(沒有參數(shù)則為空格,有參數(shù)則為該參數(shù))

相同的方法---str.rstrip()---刪除末尾的某個值? ? str.lstrip()------刪除開頭的某個值

字符串 的加法和乘法 支持禾乘,不支持除法和減法

str.count("x")---查找字符串中某個字符出現(xiàn)的次數(shù)

str.find("x")-----查找字符串中某個字符第一次出現(xiàn)的位置(沒有該字符則返回-1)

str.replace("x","x1")---------用x1代替字符串中出現(xiàn)的所有的x

type(x)-----查看x的數(shù)據(jù)類型

獲取輸入和處理輸出

獲取輸入:input()--------? ? 用于收集信息澎埠,用戶輸入的任何內(nèi)容都將按照實際內(nèi)容保存,比如輸入5始藕,則為int蒲稳,

輸入5.0 ,則保存為浮點數(shù)伍派,輸入"你好"江耀,則保存為string型,不能保存沒有用""括住的字符串

raw_input()----收集任何非數(shù)字的信息,例如輸入5 則保存為str("5");

密碼的輸入使用getpass模塊? ? ? f=getpass()? 會自動隱藏輸入

使用format()函數(shù)或者%來格式化輸出? 例子

print("你好诉植,s%",%())

print("你好{},你多大了".format("李敏"))

list(列表)

含義:一系列事務(wù)的組合

1祥国、創(chuàng)建列表? list=[](空列表)

2、列表的第一項編號是0晾腔,及l(fā)ist[0]

方法:len(list)

list.count("value")列表中某個值的出現(xiàn)次數(shù)

list.index("value")列表中某個值的在淚飆中第一次出現(xiàn)的索引位置系宫,如果沒有該列表,則返回錯誤建车;

value in list :某個值是否在列表中

以下方法會改變列表的內(nèi)容:

list.append("value"):添加某個值到列表末尾

list.extend(list1):添加某個list到另一個list的末尾? 支持"+"加法,列表支持乘法:list*n

list[index]='value':修改某個值

list.remove("value"):刪除某個值,其他項向前移動一位,沒有則報錯

list.insert(index,"value"):在指定位置添加一個列表項--該方法效率較低

list.reverse()--反轉(zhuǎn)列表

list.sort()----按照字母順序或者按照數(shù)字升序排列列表? https://www.cnblogs.com/sunny3312/archive/2017/01/07/6260472.html

list1==list2 :比較列表椒惨,如果完全相同缤至,則為True,如果不完全相同則為False

切片操作:

[start:end:step]--start 其實索引康谆,從0開始领斥,-1結(jié)束? end ---結(jié)束索引? step---步長,為正沃暗,從左向右取值月洛,為負(fù),反向取值

切片的結(jié)果不包含結(jié)束索引的值

如下變種:[::]====默認(rèn)所有

[:]===省略全部孽锥,所有值

[:3]===省略起始位置索引以及步長嚼黔。取從開始到第三個的值

[::-1]===步長為1细层,從右向左取值』=В可以認(rèn)為是反轉(zhuǎn)原列表

list()函數(shù)====可以把tuple()或者list轉(zhuǎn)換成list? 實例:list((1,2))====[1,2];list([1,2])====[1,2]

函數(shù):

創(chuàng)建函數(shù):格式:def function_name(parameter1,parameter2):

code

code

return==================該語句是調(diào)用函數(shù)后會返回的值疫赎,如果缺少,返回值為null

函數(shù)的調(diào)用? :function_name();? 如果直接輸入函數(shù)的名稱碎节,實際得到的是函數(shù)的內(nèi)存地址

函數(shù)可以設(shè)置別名捧搞,比如 abs函數(shù)可以設(shè)置為a=abs,a(-1)=>>>1;

參數(shù)的類別:默認(rèn)參數(shù)====調(diào)用函數(shù)時可以不用傳值的參數(shù),默認(rèn)參數(shù)必須在必選參數(shù)之后狮荔,不然函數(shù)不知道默認(rèn)值是哪個參數(shù)的胎撇;

默認(rèn)參數(shù)有多個時,調(diào)用函數(shù)會按照函數(shù)定義的順序進(jìn)行殖氏,也可以根據(jù)參數(shù)名=值 來進(jìn)行判斷

需要注意的一點:默認(rèn)參數(shù)必須指向不變對象晚树!不然會出現(xiàn)默認(rèn)值改變的現(xiàn)象

可變參數(shù)====參數(shù)數(shù)量不固定,定義格式? def function_name(*params):

語句受葛;

實例:

def calc(*number):

sum=0

for n in number:

sum=sum+n;

return sum

print calc(1)? #>>>>1

print calc(1,3,4)#>>>>8

list=[1,2,3,4]

#print calc(list)? >>>>unsupported operand type(s) for +: 'int' and 'list'

print calc(*list) #>>>>10

print calc(list[0],list[1],list[2],list[3]) #>>>>10

tuple=(2,3,4,5)

#print calc(tuple) #>>>>unsupported operand type(s) for +: 'int' and 'tuple'

print calc(*tuple) # >>>14

關(guān)鍵字參數(shù)====可變參數(shù)允許你傳入0個或任意個參數(shù)题涨,這些可變參數(shù)在函數(shù)調(diào)用時自動組裝為一個tuple。

而關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù)总滩,這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict

定義格式:def person(name, age, **kw):

語句:

調(diào)用:person("Name","age"纲堵,city="北京");

或者person("Name"闰渔,"age",**dict)====dict={"city":"beijing","grade"}

**extra表示把extra這個dict的所有key-value用關(guān)鍵字參數(shù)傳入到函數(shù)的**kw參數(shù)席函,kw將獲得一個dict,

注意kw獲得的dict是extra的一份拷貝冈涧,對kw的改動不會影響到函數(shù)外的extra

命名關(guān)鍵字參數(shù)==對于關(guān)鍵字參數(shù)茂附,函數(shù)的調(diào)用者可以傳入任意不受限制的關(guān)鍵字參數(shù)。

至于到底傳入了哪些督弓,就需要在函數(shù)內(nèi)部通過kw檢查营曼。

如果要限制關(guān)鍵字參數(shù)的名字,就可以用命名關(guān)鍵字參數(shù)愚隧,例如蒂阱,只接收city和job作為關(guān)鍵字參數(shù)。這種方式定義的函數(shù)如下:

實例:

def person(name, age, *, city, job):

print(name, age, city, job)

和關(guān)鍵字參數(shù)**kw不同狂塘,命名關(guān)鍵字參數(shù)需要一個特殊分隔符*录煤,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。

命名關(guān)鍵字參數(shù)必須傳入?yún)?shù)名荞胡,這和位置參數(shù)不同妈踊。

如果沒有傳入?yún)?shù)名,調(diào)用將報錯:TypeError: person() takes 2 positional arguments but 4 were given

如果函數(shù)定義中已經(jīng)有了一個可變參數(shù)泪漂,后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個特殊分隔符*了:

實例:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

使用命名關(guān)鍵字參數(shù)時廊营,要特別注意歪泳,如果沒有可變參數(shù),就必須加一個*作為特殊分隔符赘风。

如果缺少*夹囚,Python解釋器將無法識別位置參數(shù)和命名關(guān)鍵字參數(shù)

參數(shù)定義的順序必須是:必選參數(shù)、默認(rèn)參數(shù)邀窃、可變參數(shù)荸哟、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。

函數(shù)定義中瞬捕,如果沒有return則調(diào)用函數(shù)時鞍历,會返回NOne。

實例:

def product(*args):

sum=1

if len(args)>0:

for arg in args:

sum=sum*arg

return sum

else:

return ("請輸入至少一個參數(shù)")

print(product(1,3,4))

print (product(*(2,3,4)))

print(product(4))

print(product())

高階函數(shù):

1肪虎、變量可以指向函數(shù)====例子:f=abs>>>>f(-10)=>>>10

2劣砍、函數(shù)名可以是變量 ===例子? abs=10>>>>abs(-10)>>>>typeError: 把a(bǔ)bs指向10后,就無法通過abs(-10)調(diào)用該函數(shù)了扇救!因為abs這個變量已經(jīng)不指向求絕對值函數(shù)而是指向一個整數(shù)10

定義:一個函數(shù)就可以接收另一個函數(shù)作為參數(shù)刑枝,這種函數(shù)就稱之為高階函數(shù);函數(shù)式編程就是指這種高度抽象的編程范式迅腔。

內(nèi)建高階函數(shù):

1装畅、map()====map()函數(shù)接收兩個參數(shù),一個是函數(shù)沧烈,一個是Iterable掠兄,

map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的Iterator返回锌雀。

實例:def f(x):

return x*x

list=[1,2,3,4,5,6]

list2=map(f,list) #f指的是函數(shù)對象本身蚂夕,如果使用f(x),則會報錯:x 未定義;

print list2

2腋逆、reduce()====reduce()函數(shù)把一個函數(shù)作用在一個序列[x1, x2, x3, ...]上婿牍,這個函數(shù)必須接收兩個參數(shù),

reduce把結(jié)果繼續(xù)和序列的下一個元素做累積計算惩歉;例如 加法和累乘等脂;

實例:def chr2int(s):

return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[s]

def fn(x,y):

return 10*x+y

def str2int(s):

return reduce(fn,map(chr2int,s))

print (str2int("13456"))#>>>>13456(int類型的)

3、filter()=====filter()函數(shù)也接收一個函數(shù)和一個序列柬泽。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素嫁蛇,

然后根據(jù)返回值是True還是False決定保留還是丟棄該元素锨并。過濾函數(shù)。

實例:def not_empty(s):

return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '? ']))=====和filter(not_empty,['A',"",'B',None,'C',' '])沒有區(qū)別

#注釋布爾"與" - 如果 x 為 False睬棚,x and y 返回 False第煮,否則它返回 y 的計算值解幼。

#filter()函數(shù)返回的是一個Iterator,所以需要使用list()函數(shù)(是一個轉(zhuǎn)換函數(shù),而不是list[])

完成計算并獲取結(jié)果包警;https://www.cnblogs.com/spiritman/p/5158331.html迭代器的使用及特點撵摆。http://blog.csdn.net/u012671171/article/details/42169843 yield的講解;

4害晦、sorted()=====sorted()函數(shù)接受一個序列和key函數(shù)特铝,返回按照規(guī)則的排序;

sorted()函數(shù)也是一個高階函數(shù),它還可以接收一個key函數(shù)來實現(xiàn)自定義的排序;

ey指定的函數(shù)將作用于list的每一個元素上壹瘟,并根據(jù)key函數(shù)返回的結(jié)果進(jìn)行排序.如果反轉(zhuǎn)鲫剿,只要reverse=True 即可;

sorted()也是一個高階函數(shù)稻轨。用sorted()排序的關(guān)鍵在于實現(xiàn)一個映射函數(shù)灵莲。

實例:>>> sorted([36, 5, -12, 9, -21], key=abs)

>>>[5, 9, -12, -21, 36]

異常處理:

第一種異常邏輯

try:

語句

except 錯誤名:

語句

except 錯誤名:

語句

else:

語句

流程:先執(zhí)行 try 語句,如果出現(xiàn)了異常殴俱,則判斷異常的類型政冻,執(zhí)行相應(yīng)的except (不再執(zhí)行else語句了),如果沒有則拋出異常线欲,停止執(zhí)行程序明场,如果沒有異常,

則執(zhí)行else語句询筏;

在except的錯誤語句中古拴,需要把范圍小的放在前面,范圍大的放在后面飞主,才會有效果誉察,不然,后面的錯誤類型一直不會執(zhí)行到踱讨;

變種:except可以不帶錯誤名魏蔗,只有語句,或者錯誤名可以是多個(Exception1[, Exception2[,...ExceptionN]]])均可

第二種異常邏輯:

try:

語句

finally:

語句

不管try語句是否執(zhí)行痹筛,都會執(zhí)行finally語句

實例:

def f():

try:

print 1

return 1

except:

return 2

else:

print 3

return 3

finally:

print 0

#return 0

執(zhí)行結(jié)果:結(jié)果為 1 0 1

說明try里面運行完之后return莺治,阻擋了else的執(zhí)行,但是并沒有影響finally的執(zhí)行帚稠。

借用Vamer文章的兩句話:

“如果try中沒有異常谣旁,那么except部分將跳過,執(zhí)行else中的語句滋早,但是如果try中有return榄审,則結(jié)束運行。

finally是無論是否有異常杆麸,最后都要做的一些事情搁进±烁校”

這里補(bǔ)充一句,在含有return的情況下饼问,并不會阻礙finally的執(zhí)行影兽。

第三種處理方式:

使用raise 觸發(fā)異常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市莱革,隨后出現(xiàn)的幾起案子峻堰,更是在濱河造成了極大的恐慌,老刑警劉巖驮吱,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茧妒,死亡現(xiàn)場離奇詭異,居然都是意外死亡左冬,警方通過查閱死者的電腦和手機(jī)桐筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拇砰,“玉大人梅忌,你說我怎么就攤上這事〕疲” “怎么了牧氮?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瑰枫。 經(jīng)常有香客問我踱葛,道長,這世上最難降的妖魔是什么光坝? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任尸诽,我火速辦了婚禮,結(jié)果婚禮上盯另,老公的妹妹穿的比我還像新娘性含。我一直安慰自己,他們只是感情好鸳惯,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布商蕴。 她就那樣靜靜地躺著,像睡著了一般芝发。 火紅的嫁衣襯著肌膚如雪绪商。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天辅鲸,我揣著相機(jī)與錄音格郁,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛理张,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绵患,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼雾叭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了落蝙?” 一聲冷哼從身側(cè)響起织狐,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筏勒,沒想到半個月后移迫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡管行,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年厨埋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐顷。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荡陷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迅涮,到底是詐尸還是另有隱情废赞,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布叮姑,位于F島的核電站唉地,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏传透。R本人自食惡果不足惜耘沼,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旷祸。 院中可真熱鬧耕拷,春花似錦、人聲如沸托享。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闰围。三九已至赃绊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羡榴,已是汗流浹背碧查。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忠售。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓传惠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親稻扬。 傳聞我的和親對象是個殘疾皇子卦方,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容