python基礎(chǔ)知識(實用)_第1頁
python基礎(chǔ)知識(實用)_第2頁
python基礎(chǔ)知識(實用)_第3頁
python基礎(chǔ)知識(實用)_第4頁
python基礎(chǔ)知識(實用)_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、python 基礎(chǔ)知識目錄python 基礎(chǔ)知識 .1前言:.2一、 基礎(chǔ)知識.31.1 安裝.31.2 交互式解釋器.31.3 函數(shù)、變量、模塊.41.4 字符串.4二、 列表.52.1 序列的操作.52.2 列表的基本操作.72.3 列表的方法.8三、 元組.93.1 元組的操作 .103.2tuple 函數(shù) .10四、 字符串.104.1 字符串格式化 .104.2 字符串的方法 .11五、 字典.115.1dict() 函數(shù) .115.2 字典基本操作 .125.3 字典的格式化字符串.125.4 字典的方法 .12六、 條件、循環(huán)和其他語句.146.1 模塊導(dǎo)入 .146.2 賦值

2、. 146.3 語句塊 .156.4 條件語句 .156.5 循環(huán) . 166.6 列表推導(dǎo)式 .186.7pass/del/exec/eval .18七、7.47.5八、九、抽象(函數(shù)).18創(chuàng)建函數(shù) .18文檔字符串 .19參數(shù) . 19作用域 .22遞歸 . 23對象.24對象的特性 .24類的創(chuàng)建和特性的私有化.24子類與超類 .25異常.26內(nèi)建異常類 .26自定義異常類 .27捕捉異常 .27十、 魔法方法、屬性、迭代器.2810.1 構(gòu)造方法 .2810.2 重寫 .2810.3 屬性 .2910.4 靜態(tài)方法與類成員方法 .

3、 3110.5 迭代器 .32十一、 模塊和包.3311.1 模塊的導(dǎo)入 .3311.2 包 .3411.3 標(biāo)準庫 .36前言:什么是 python:官方解釋:一種解釋型的、面向?qū)ο蟮?、帶有動態(tài)語義的高級程序設(shè)計語言。優(yōu)點:簡單、強大,程序員在編程時能夠保持自己的風(fēng)格,容易實現(xiàn)自己想要的功能,程序 清晰易懂。歷史: guido van rossum 在 20 世紀 90 年代初創(chuàng)造了這門語言。一、 基礎(chǔ)知識1.1 安裝1. 使用包管理器安裝 python,如通過 yum 安裝;2. 從源文件編譯安裝 python:(1) 下載源代碼;下載擴展名為.tgz 的文件保存到本地某一目錄下;(2)

4、進入該目錄,使用 tar xzvf python-2.6.4.tgz 對文件解壓縮;(3) 進入已解壓的文件目錄,cd python-2.6.4 運行以下命令:./configure -prefix=$(pwd)makemake install(4) 將當(dāng)前文件夾路徑放到環(huán)境變量 pyth 中。在 python 腳本首行寫上“#!/usr/bin/env python”后,不管 python 二進制文件在哪里, 程序都會自動執(zhí)行。若系統(tǒng)中安裝了新版本的 python,同時舊版本仍然存在,那么應(yīng)該直接指明新版本路徑, 如:#!/usr/bin/python2.61.2 交互式解釋器安裝了 pyt

5、hon 并設(shè)置了環(huán)境變量后,輸入 python 進入交互式解釋器。在交互式解釋器中可以直接計算出表達式的值,如輸入 1+1 后按回車,輸出 2輸入 1/2,輸出 0(因為計算結(jié)果的小數(shù)部分被截除了)輸入 1/21.0/2 ,輸出 0.5輸入 1/2,輸出 0;輸入 1.0/2.0,輸出 0.0(/雙斜線表示進行整除)1.3 函數(shù)、變量、模塊內(nèi)建函數(shù):input():使用 input 函數(shù)接收輸入值,如 x=input(),輸入 12,則 x=12 pow(2,3)=8abs(-10)=10round(1.8/2)=1.0, 四舍五入了模塊:(1) math.floor(1.8/2)=0.0,

6、向下取整floor 函數(shù)不能直接用,要先加載 math 模塊: import mathimport mathint(math.floor(32.9)輸出:32(2)另外用下面的方式直接 import 函數(shù),不需要在函數(shù)前加上模塊名了: from math import floorint(floor(32.9)變量:可以使用變量來引用函數(shù),即將某個函數(shù)賦給一個變量: foo=math.sqrtfoo(4)輸出:2.01.4 字符串(1) 字符串拼接:+x =im x! y =im y! x+y輸出:im x! im y! (2) 數(shù)值轉(zhuǎn)化成字符串str、repr 與反引號:可將數(shù)值轉(zhuǎn)化成字符串s

7、tr 會把值轉(zhuǎn)換為合理形式的字符串;repr 會創(chuàng)建一個字符串,以合法的 python 表達式的形式來表示值。如:print str(hello world!) 輸出:hello world!print repr(hello world!) 輸出:hello world!反引號: (python3.0 中已不再使用反引號,建議用 repr)可以將數(shù)字與字母連接在一起,如:temp=42print temp is: + temp 輸出:temp is: 42print temp + and + 123 輸出:42and123使用用 repr 或 str:print temp is: +repr(

8、temp) 輸出:temp is: 42print temp is: +repr(temp) + str(123) 輸出:temp is: 42123(3) 多行字符串長字符串跨多行時,用三個單引號或三個雙引號,這樣在字符串中可以同時使用單引號 和雙引號。普通字符串跨多行時,也可在行尾用反斜線”,如:print “hello, how are you? “輸出:hello, how are you?(4) 原始字符串輸出原始字符串時字符串前面帶r ,如:print rc:programe filenownew 輸出:c:programe filenownewprint rc:new lets

9、go! 輸出:c:new lets go!二、 列表python 中最基本的數(shù)據(jù)結(jié)構(gòu)是序列(sequence),序列中每個元素被分配一個序號 即元素的位置,也稱為索引,第一個索引是 0,最后一個元素索引標(biāo)記為-1。 python 中包含 6 種內(nèi)建序列:列表、元組、字符串、unicode 字符串、buffer 對象、xrange 對象。2.1 序列的操作所有序列類型都可以進行的特定操作如下:索引(indexing)分片(sliceing)加(adding)乘(multiplying)成員資格(檢查某個元素是否屬于序列) 索引序列中所有元素都是有編號的,從 0 開始遞增。元素可以通

10、過編號進入訪問。 實例:#!/usr/bin/pythonmonths = jan,feb,mar,apr,may,jun,jul,aug,sept,oct,nov,dec endings = st,nd,rd + 17* th + st,nd,rd + 7* th + styear = raw_input(year: )month = raw_input(month: )day = raw_input(day: )month_num = int(month)day_num = int(day)month_name = monthsmonth_num-1 #索引day_ord = day +

11、endingsday_num-1 #索引print month_name + + day_ord + + year輸入 year: 2011month: 12day: 21輸出:dec 21st 20 分片使用索引可以訪問單個元素,使用分片可以訪問一定范圍內(nèi)的元素。分片需要提供兩個索引作為邊界,用冒號分隔兩個索引,第 1 個索引的元素包含在分片 內(nèi),第二個索引的元素不包含在分片內(nèi),如:tag=tag7:21輸出:注:tag7:21,取第 7 到第 20 個字符。若想包含從第一個開始(或直到最后一個結(jié)束)的字符

12、串,可以將前一個(或后一個) 索引置空,如:tag:5, tag7:, tag:步長:分片中的第三個值(開始與結(jié)束索引之后)如:idx=1,2,3,4,5,6,7,8,9,10idx:2 輸出:1, 3, 5, 7, 9idx:-1 輸出:10, 9, 8, 7, 6, 5, 4, 3, 2, 序列加法兩種相同類型的序列才能進行連接操作,如:1,2,3 + 4,5,6 輸出:1, 2, 3, 4, 5, 6hello + _ + world 輸出:hello_world不同類型序列不能相加,如:1,2,3 + hello 提示出錯 序列乘法數(shù)字 x 與序列相乘后

13、,原序列被重復(fù) x 次。12 * 10 輸出:列表初始化,創(chuàng)建 10 個元素空間但沒有值:none * 10 成員資格in 運算,檢查一個值是否在序列中。例 1:users=taobao, alibaba, rootinput_name=raw_input(enter your user name: )if input_name in users:print input_name + is in users!else:print warning! + input_name + is not in users!例 2:db = smith,4309,jones,0921,albe

14、r,8745,username = raw_input(user name: )pin = raw_input(pin code: )if username, pin in db:print access granted!else:print warning: username or pin is error!2.2列表的基本操作列表與元組的區(qū)別:列表可以修改,元組不可以修改。列表的元素寫在方括號中,元素間用逗號隔開,如:edward = edward,29,hangzhou (1) 元素賦值:如 x1=0(2) 刪除元素:names = alice, beth, earl, dimdodel

15、 names2結(jié)果 names = alice , beth, dimdo (3) 分片賦值:可以一次為多個元素賦值:name = list(perl)name1: = list(ython)結(jié)果 name = p, y , t , h, o, n 可以實現(xiàn)插入元素:num = 1, 5num 1:1 = 2, 3, 4結(jié)果 num = 1, 2, 3, 4, 5可以實現(xiàn)刪除元素:num = 1, 2, 3, 4, 5num2:4 = 結(jié)果 num = 1, 2, 52.3 列表的方法(1) appendnum = 1,2,3num.append(4)結(jié)果 num = 1,2,3,4(2) c

16、ountx = to, be, or , not , to, bex.count(to)結(jié)果為 2(3) extenda = 1, 2, 3b = 4, 5, 6a.extend(b)結(jié)果 a = 1, 2, 3, 4, 5, 6(4) indexa=who, am, i, ?a.index(?)結(jié)果為 3(5) insertnum = 1, 2, 3, 4, 5num.insert(3, four )結(jié)果 num = 1, 2, 3, four , 4, 5(6) pop:移除列表中的一個元素,并且返回該元素的值,如:x = 1, 2, 3x.pop() 返回 3x.pop(1) 返回 2(

17、7) remove:移除表中某個值x = to, be, or , not , to, be x.remove(be)結(jié)果 x = to, or , not , to, be(8) reverse:將列表中的元素反向存放 x = 1, 2, 3x.reverse()結(jié)果 x = 3, 2, 1(9) sort:對原列表進行排序,返回值為空 x = 5, 1, 2, 4, 3, 6y=x.sort()結(jié)果 x = 1, 2, 3, 4, 5, 6y 無值sorted()函數(shù):x = 5, 1, 2, 4, 3, 6x =sorted(x)結(jié)果 x = 5, 1, 2, 4, 3, 6y = 1,

18、 2, 3, 4, 5, 6(10) 比較函數(shù) cmp():cmp(1,2) 返回-1cmp(1,1) 返回 0cmp(2,1) 返回 1三、 元組元組是不可變序列??赵M:()一個值的元組:1, 或 多個值的元組:1, 2, 3(1,) 其中逗號不可省略 或(1, 2, 3)2*(2+3) 輸出 10 #沒有逗號,普通的值計算2*(2+3,) 輸出(5, 5) #有逗號,表示是一個元組,相乘后得到一個新的元組,有兩個值3.1元組的操作1. 創(chuàng)建元組:x = 1, 2, 32. 訪問元組元素:x1輸出:2x0:2 輸出:(1, 2)3.2tuple 函數(shù)將序列轉(zhuǎn)換為元組:tuple(1, 2,

19、 3) 輸出(1, 2, 3) #列表tuple(abc)輸出(a, b, c) #字符串tuple(1, 2, 3) 輸出(1, 2, 3) #元組四、 字符串字符串是不可改變的,不能對一個字符串重新賦值。4.1 字符串格式化用%分隔,%左側(cè)放置一個字符串的格式,在%右側(cè)放置希望格式化的字符串值。如: str=(1,2,3,4,5)print %s%s%s%s%s % str輸出:12345例:x =1.0y =3.0z =x / yprint %.5f % z輸出:0.33333字符串寬度、精度、符號、對齊、0 填充:%-10.2f % 3.1415926 輸出:3.14 -表示左對齊%1

20、0.2f % 3.1415926 輸出: 3.14默認右對齊%+10.2f % 3.1415926 輸出: +3.14 +表示顯示正負數(shù) %+10.2f % -3.1415926 輸出: -3.14%+-10.2f % -3.1415926 輸出:-3.14 %+-10.2f % 3.1415926 輸出:+3.14 %010.2f % 3.1415926輸出:0000003.14 0 表示開頭不足部分用 0 補全4.2 字符串的方法1. find():在母串中查找子串,找到后返回索引值,找不到返回-1.2. join(): 連接字符串列表:如str = 1, 2, 3sep = +sep.j

21、oin(str) 輸出:1+2+3dirs = ,usr , bin, env/.join(dirs) 輸出:/usr/bin/env3. lower(): 返回字符串的小寫字母,如:abc .lower() 輸出:abc4. replace(): 將字符串的所有匹配項都替換,再返回替換后的字符串。如:i am a student.replace(i am,im) 輸出:im a student5. split(): join 的逆方法,將字符串分割成序列,如:1+2+3.split( +) 輸出:1, 2, 36. strip(): 去除一個字符串的前后空格,再返回去除空格后的字符串。7.

22、translate(): 只處理單個字符,可以同時進行多個替換。from string import maketranstable=maketrans(cs,kz) /創(chuàng)建轉(zhuǎn)換表,格式 string. maketrans(from,to) print table97:123 輸出:abkdefghijklmnopqrztuvwxyzstr=this is an incredible test.translate(table)print str 輸出:thiz iz an inkredible tezt五、 字典鍵/值對之間用冒號隔開,項之間用逗號隔開,整個字典用大括號括起來。如: phoneb

23、ook=寧波:0574, 臺州:0576, 杭州:0571phonebook寧波 輸出:05745.1dict() 函數(shù)可以使用該函數(shù)通過其他映射或(鍵,值)對序列建立字典,如: items=(name,alice),(age,28)d=dict(items)print d輸出字典:age: 28, name: alice或者用關(guān)鍵字參數(shù)形式 d=dict(name=alice,age=28)print d輸出字典:age: 28, name: alice5.2 字典基本操作與序列(sequence)類似。字典:phonebook=寧波:0574, 臺州:0576, 杭州:0571 len(p

24、honebook)phonebook寧波phonebook紹興=0573 /增加一個字典項del phonebook 臺州 /刪除一個字典項紹興 in phonebook /返回 true臺州 in phonebook /返回 false5.3 字典的格式化字符串hangzhous area number is %(杭州)s % phonebook輸出:hangzhous area number is 05715.4 字典的方法(1) clear(): 清除字典中所有項目,如: phonebook=寧波:0574, 臺州:0576, 杭州:0571 x=phonebook.clear()pri

25、nt phonebook 輸出:print x輸出:none(2) copy(): 淺復(fù)制,返回一個具有相同鍵-值對的新字典。如: phonebook=nibo:0574, taizhou:0576, hangzhou:0571x=phonebook.copy()xtaizhou=0576-0576 /修改 valuex輸出:nibo: 0574, hangzhou: 0571, taizhou: 0576-0576phonebook 輸出: nibo: 0574, hangzhou: 0571, taizhou: 0576 x.clear()x輸出: /刪除字典phonebook 輸出: n

26、ibo: 0574, hangzhou: 0571, taizhou: 0576(3) fromkeys(): 使用給定的鍵建立新的字典,鍵的默認值為 none,如: x=y= x.fromkeys(name,age)xy輸出:輸出:age: none, name: none(4) get(): 訪問字典中的項,即使項不存在時,也不會出錯,如: x=name:alice, age:28print x.get(name)print x.get(addr)print x.get(name, n/a)print x.get(addr, n/a)輸出:alice輸出:none輸出:alice / 鍵存

27、在,返回對應(yīng)值輸出:n/a /自定義默認值為n/a,替換 none(5) has_key(): 檢查字典中是否包含給出的鍵,相當(dāng)于表達式 k in dict, 注:python3.0 不包括這個函數(shù)x.has_key(name) 輸出:truex.has_key(addr)輸出:false (6) items(): 將字典的所有項以列表方式返回,如:x.items() 輸出:(age, 28), (name, alice)(7) keys(): 將字典的所有關(guān)鍵字以列表方式返回,如:x.keys() 輸出:age, name(8) values():將字典的所有 values 值以列表方式返回

28、,如: x.values() 輸出:28, alice(9) pop(): 返回對應(yīng)給定鍵的值,再將該鍵值對從原字典中刪除,如 x.pop(name) 輸出:alicex輸出:age: 28 /原來的(name, alice)已被刪除(10) popitem(): 彈出字典的項,如: x=no.1:1, no.2:2, no.5:5, no.4:4, no.3:3x輸出:no.5: 5, no.4: 4, no.3: 3, no.2: 2, no.1: 1x.popitem() 輸出:(no.5, 5) x.popitem() 輸出:(no.4, 4)x輸出:no.3: 3, no.2: 2,

29、 no.1: 1(11) setdefault(): 與 get()類似,鍵存在返回對應(yīng)值,但給定鍵不存在時,返回默 認值后更新了字典,如:x=name:alice, age:28print x. setdefault (name) 輸出:alicex輸出:age: 28, name: aliceprint x. setdefault (addr) 輸出:nonex輸出:age: 28, name: alice, addr: noneprint x. setdefault (name, n/a) 輸出:alicex輸出:age: 28, name: alice, addr: noneprint

30、 x. setdefault (addr, n/a) 輸出:nonex輸出:age: 28, name: alice, addr: noneprint x. setdefault (phone, n/a) 輸出:n/ax輸出:phone: n/a, age: 28, name: alice, addr: none/用自定義值n/a,替換默認值 none(12) update(): 可以用一個字典項更新另外一個字典,關(guān)鍵字存在時改變其對應(yīng) 值,關(guān)鍵字不存在時添加新項,如:x =name:alice, age:28y =age:25, phone:0571-12345x.update(y)x輸出:

31、phone: 0571-12345, age: 25, name: alice六、 條件、循環(huán)和其他語句 6.1 模塊導(dǎo)入(1)(2)(3)(4)(5)6.2 賦值import from import , , from import *import as from import as (1) 序列解包:values=1,2,3values 輸出(1, 2, 3)x,y,z= values / values 中的值賦給對應(yīng)的變量x輸出 1y 輸出 2z輸出 3student=name:alice, age:28key, value = student.popitem()print key, va

32、lue 輸出:age 28(2) 鏈式賦值:x=y=student=name:alice, age:28(3) 增量賦值:x=1x+=1 x 結(jié)果為:2x*=3 x 結(jié)果為:6x/=2 x 結(jié)果為:3x%=3 x 結(jié)果為:0x-=1 x 結(jié)果為:-1str=foo str 為:foostr+=bar str 為:foobarstr*=2 str 為:foobarfoobar6.3 語句塊以冒號(:)標(biāo)識語句塊的開始,塊中每個語句縮進相同空格數(shù),當(dāng)回退到和已經(jīng)閉合 的塊一樣的縮進量時表示當(dāng)前語句塊已經(jīng)結(jié)束。例:def maximum(x, y):print test func_return be

33、gin .if x y:print x is maximum:print test func_return end . return xelse:print y is maximum:print test func_return end . return yprint test func_return end . nprint maximum(2, 3)print n6.4 條件語句(1) 布爾值布爾值為假的布爾表達式有:false none 0 “” () bool(false)= bool(none)= bool(0)=bool()=bool()=bool()=bool()=false(2) if elif else 語句:num = input(enter a number: )if num 0:print the number is positive elif num 0:print the number is negative else:print the number is zero(3) 運算符:a. 比較運行符b. 布爾運算符:and 、 or 、 not(4) 斷言:檢查某些條件,如果不符合直接報錯,如: age=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論