Python基礎語法_第1頁
Python基礎語法_第2頁
Python基礎語法_第3頁
Python基礎語法_第4頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Python 的特點1. 簡單Python 是一種代表簡單思想的語言。2. 易學Python 有極其簡單的語法。3. 免費、開源Python 是 FLOSS (自由 /開放源碼軟件)之一。4. 高層語言使用 Python 編寫程序時無需考慮如何管理程序使用的內存一類的底層細節(jié)。5. 可移植性Python 已被移植到很多平臺,這些平臺包括Linux 、Windows 、FreeBSD 、Macintosh 、Solaris、OS/2、Amiga 、AROS 、AS/400 、BeOS、 OS/390 、 z/OS、 Palm OS、 QNX 、 VMS 、 Psion、 Acom RISC OS

2、 、 VxWorks 、 PlayStation 、 Sharp Zaurus、 Windows CE 甚至還有 PocketPC。6. 解釋性可以直接從源代碼運行。在計算機內部,python 解釋器把源代碼轉換為字節(jié)碼的中間形式,然后再把它翻譯成計算機使用的機器語言。7. 面向對象Python 既支持面向過程編程也支持面向對象編程。8. 可擴展性部分程序可以使用其他語言編寫,如c/c+ 。9. 可嵌入型可以把 Python 嵌入到 c/c+ 程序中,從而提供腳本功能。10. 豐富的庫Python 標準庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、數(shù)據(jù)庫、網

3、頁瀏覽器、 CGI 、 FTP 、電子郵件、XML、 XML-RPC、 HTML、 WAV文件、密碼系統(tǒng)、GUI (圖形用戶界面)、Tk和其他與系統(tǒng)有關的操作。-分割線-以下是Python的基本語法-一、基本概念1. python 中數(shù)有四種類型:整數(shù)、長整數(shù)、浮點數(shù)和復數(shù)。整數(shù),如1長整數(shù)是比較大的整數(shù)浮點數(shù)如1.23、 3E-2復數(shù)如1 + 2j 、1.1 + 2.2j2. 字符串(字符的序列)python 中單引號和雙引號使用完全相同。使用三引號 (或 ) 可以指定一個多行字符串。轉義符自然字符串,python 允許處理通過在字符串前加r 或 R。 如unicode 字符串,加前綴u 或

4、rthis is a line with n則 n 會顯示,并不是換行。U ,如 uthis is an unicode string 。字符串是不可變的。按字面意義級聯(lián)字符串,如this is string會被自動轉換為this is string。3. 標識符的命名第一個字符必須是字母表中字母或下劃線 _。標識符的其他的部分有字母、數(shù)字和下劃線組成。標識符對大小寫敏感。4. 對象python 程序中用到的任何“東西”都成為“對象”。5. 邏輯行和物理行物理行是我們在編寫程序時看到的,邏輯行則是python 看到的。python 中分號 ;標識一個邏輯行的結束,但是實際中一般每個物理行只寫一

5、個邏輯行,可以避免使用分號。多個物理行中可以寫一個邏輯行,如下:s = peter is writing this article上面 的使用被稱為明確的行連接,又如:print peter6. 縮進空白在 python 是非常重要的,行首的空白是最重要的,又稱為縮進。行首的空白(空格和制表符)用來決定邏輯行的縮進層次,從而決定語句分組。這意味著同一層次的語句必須有相同的縮進,每一組這樣的語句稱為一個塊。注意:不要混合使用空格和制表符來縮進,因為在跨越不同的平臺時無法正常工作。二、運算符與表達式1. 運算符與其用法運算符名稱 說明例子+加兩個對象相加 3 + 5 得到 8。 a + b得到 a

6、b。-減得到負數(shù)或是一個數(shù)減去另一個數(shù)-5.2得到一個負數(shù)。50 - 24 得到 26。*乘兩個數(shù)相乘或是返回一個被重復若干次的字符串2 * 3得到 6。 la * 3 得到 lalala 。* 冪返回 x 的 y 次冪3*4 得到 81(即 3*3*3*3 )/ 除 x 除以 y/取整除返回商的整數(shù)部分4 / 3.0 得到 1.0% 取模 返回除法的余數(shù)8%3 得到 2。 -25.5%2.25 得到 1.5左移 把一個數(shù)的比特向左移一定數(shù)目(每個數(shù)在內存中都表示為比特或二進制數(shù)字,即0和 1)2右移 把一個數(shù)的比特向右移一定數(shù)目11 1 得到 5。 11 按比特表示為1011,向右移動 1

7、比特后得到 101,即十進制的 5。&按位與數(shù)的按位與5&3 得到 1。|按位或數(shù)的按位或5|3得到 7。按位異或數(shù)的按位異或53得到6按位翻轉x 的按位翻轉是-(x+1)5 得到 6。小于 返回 x 是否小于y。所有比較運算符返回這些變量名的大寫。5 3 返回 0(即 False)而1 表示真, 返回 0 表示假。 這分別與特殊的變量3 5 返回 1(即 True)。比較可以被任意連接:True 和 False 等價。 注意,3 5 大于 返回 x 是否大于 y 5 3 返回 True 。如果兩個操作數(shù)都是數(shù)字,它們首先被轉換為一個共同的類型。否則,它總是返回 False。=小于等于 返回

8、x 是否小于等于yx = 3; y = 6; x =大于等于 返回 x 是否大于等于yx = 4; y = 3; x = y返回 True 。=等于 比較對象是否相等x = 2; y = 2; x = y 返回 True 。 x = str; y = stR; x = y返回 False。 x = str; y = str; x = y 返回True。!=不等于比較兩個對象是否不相等x = 2; y = 3; x != y 返回 True。not布爾“非”如果 x 為 True,返回 False。如果 x 為 False,它返回 True。x = True; not y 返回 False。an

9、d布爾“與”如果 x 為 False, x and y 返回 False,否則它返回 y 的計算值。x = False; y = True; x and y ,由于 x 是 False,返回 False。在這里, Python 不會計算 y,因為它知道這個表達式的值肯定是False(因為 x 是 False)。這個現(xiàn)象稱為短路計算。or布爾“或”如果 x 是 True,它返回 True,否則它返回 y 的計算值。x = True; y = False; x or y 返回 True 。短路計算在這里也適用。2. 運算符優(yōu)先級(從低到高)運算符 描述lambdaLambda 表達式or布爾“或”

10、and 布爾“與”not x 布爾“非”in, not in 成員測試is, is not 同一性測試,=,!=,= 比較|按位或 按位異或& 按位與 移位+, - 加法與減法* , / , % 乘法、除法與取余+x , -x正負號x按位翻轉*指數(shù)x.attribute 屬性參考xindex下標xindex:index尋址段f(arguments.) 函數(shù)調用(experession,.)綁定或元組顯示expression,. 列表顯示key:datum,.字典顯示expression,.字符串轉換3. python控制臺輸出使用 printprint abc#打印 abc 并換行print

11、abc%s % d#打印 abcdprint abc%sef%s % (d, g)#打印abcdefg三、控制流1. if語句i = 10n = int(raw_input(enter a number:)if n = i:print equalelif n 刪除一個變量/名稱, del 之后,該變量就不能再使用。六、數(shù)據(jù)結構python 有三種內建的數(shù)據(jù)結構:列表、元組和字典。1. 列表list 是處理一組有序項目的數(shù)據(jù)結構,列表是可變的數(shù)據(jù)結構。列表的項目包含在方括號 中, eg: 1, 2, 3 , 空列表 。判斷列表中是否包含某項可以使用in,比如l = 1, 2, 3; print

12、1 in l; #True;支持索引和切片操作;索引時若超出范圍,則 IndexError ;使用函數(shù)len() 查看長度;使用del 可以刪除列表中的項,eg: del l0 #如果超出范圍,則IndexErrorlist 函數(shù)如下:append( value )- 向列表尾添加項valuel = 1, 2, 2l.append(3) #1, 2, 2, 3count(value)- 返回列表中值為value 的項的個數(shù)l = 1, 2, 2print l.count(2) # 2extend(list2)- 向列表尾添加列表list2l = 1, 2, 2l1 = 10, 20l.exte

13、nd(l1)print l#1, 2, 2, 10, 20index(value, start, stop)-返回列表中第一個出現(xiàn)的值為l = 1, 2, 2a = 4try:value的索引,如果沒有,則異常ValueErrorprint l.index(a)except ValueError, ve:print there is no %d in list % ainsert(i, value)- 向列表 i 位置插入項vlaue ,如果沒有i,則添加到列表尾部l = 1, 2, 2l.insert(1, 100)print l #1, 100, 2, 2l.insert(100, 100

14、0)print l #1, 100, 2, 2, 1000pop(i)- 返回 i 位置項,并從列表中刪除;如果不提供參數(shù),則刪除最后一個項;如果提供,但是范圍,則異常IndexErrorl = 0, 1, 2, 3, 4, 5print l.pop() # 5print l #0, 1, 2, 3, 4print l.pop(1) #1print l #0, 2, 3, 4try:i 超出索引l.pop(100)except IndexError, ie:print index out of rangeremove(value)- 刪除列表中第一次出現(xiàn)的value ,如果列表中沒有vlaue

15、 ,則異常ValueErrorl = 1, 2, 3, 1, 2, 3l.remove(2)print l #1, 3, 1, 2, 3try:l.remove(10)except ValueError, ve:print there is no 10 in listreverse()- 列表反轉l = 1, 2, 3l.reverse()print l #3, 2, 1sort(cmp=None, key=None, reverse=False)- 列表排序【 Python Library Reference 】cmp:cmp specifies a custom comparison fu

16、nction of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()key:key specifies a function of one argument t

17、hat is used to extract a comparison key from each list element: key=str.lower reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying anequivalent cm

18、p function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.l5 = 10, 5, 20, 1, 30l5.sort()print l5 #1, 5, 10, 20, 30l6 = bcd, abc, cde, bbbl6.sort(cmp = lambda s1, s2: cmp(s10,s21)print l6 #abc, bbb, bcd, cdel7 = bcd, abc, cde, bb

19、b, fafl7.sort(key = lambda s: s1)print l7 #faf, abc, bbb, bcd, cde2. 元組tuple和list十分相似,但是tuple是不可變的,即不能修改tuple ,元組通過圓括號中用逗號分割的項定義;支持索引和切片操作;可以使用in查看一個元素是否在tuple中??赵M();只含有一個元素的元組(a,) #需要加個逗號優(yōu)點:tuple比 list速度快;對不需要修改的數(shù)據(jù)進行寫保護,可以是代碼更安全tuple與list可以相互轉換,使用內置的函數(shù)list() 和tuple() 。l = 1, 2, 3print l # 1, 2, 3t

20、 = tuple(l)print t # (1, 2, 3)l1 = list(t)print l1 #1, 2, 3元組最通常的用法是用在打印語句,如下例:name = Peter Zhangage = 25print Name: %s; Age: %d % (name, age)# Name: Peter Zhang; Age: 25函數(shù)如下:count(value)- 返回元組中值為value 的元素的個數(shù)t = (1, 2, 3, 1, 2, 3)print t.count(2) # 2index(value, start, stop)-返回列表中第一個出現(xiàn)的值為t = (1, 2,

21、3, 1, 2, 3)print t.index(3) # 2try:value的索引,如果沒有,則異常ValueErrorprint t.index(4)except ValueError, ve:print there is no 4 in tuple# there is no 4 in tuple3. 字典字典由鍵值對組成,鍵必須是唯一的;eg: d = key1:value1, key2:value2順序的,如果想要;空字典用表示;字典中的鍵值對是沒有一個特定的順序,那么使用前需要對它們排序;dkey = value,如果字典中已有key,則為其賦值為value ,否則添加新的鍵值對k

22、ey/value ;使用 del dkey可以刪除鍵值對;判斷字典中是否有某鍵,可以使用d = d1 = oned2 = twod3 = threedel d3for key, value in d.items():print %s - %s % (key, value)#1 - one#2 - twoin或not in ;dict 函數(shù)如下 :clear()- 刪除字典中所有元素d1 = 1:one, 2:twod1.clear()print d1 # copy()- 返回字典的一個副本(淺復制)d1 = 1:one, 2:twod2 = d1.copy()print d2 #1: one,

23、 2: twodict.fromkeys(seq,val=None) -創(chuàng)建并返回一個新字典,以序列seq 中元素做字典的鍵,val為字典所有鍵對應的初始值 (默認為None)l = 1, 2, 3t = (1, 2, 3)d3 = .fromkeys(l)print d3 #1: None, 2: None, 3: Noned4 = .fromkeys(t, default)print d4 #1: default, 2: default, 3: defaultget(key,default)- 返回字典dict中鍵key對應值,如果字典中不存在此鍵,則返回default的值 (defaul

24、t默認值為 None)d5 = 1:one, 2:two, 3:threeprint d5.get(1) #oneprint d5.get(5) #Noneprint d5.get(5, test) #testhas_key(key)- 判斷字典中是否有鍵keyd6 = 1:one, 2:two, 3:threeprint d6.has_key(1)#Trueprint d6.has_key(5)#Falseitems()- 返回一個包含字典中(鍵 , 值 )對元組的列表d7 = 1:one, 2:two, 3:threefor item in d7.items():print item#(1

25、, one)#(2, two)#(3, three)for key, value in d7.items():print %s - %s % (key, value)#1 - one#2 - two#3 - threekeys()- 返回一個包含字典中所有鍵的列表d8 = 1:one, 2:two, 3:threefor key in d8.keys():print key#1#2#3values()- 返回一個包含字典中所有值的列表d8 = 1:one, 2:two, 3:threefor value in d8.values():print value#one#two#threepop(k

26、ey, default)- 若字典中key 鍵存在, 刪除并返回dictkey ,若不存在, 且未給出default 值,引發(fā) KeyError異常d9 = 1:one, 2:two, 3:threeprint d9.pop(1) #oneprint d9 #2: two, 3: threeprint d9.pop(5, None) #Nonetry:d9.pop(5)# raise KeyErrorexcept KeyError, ke:printKeyError:, ke #KeyError:5popitem()- 刪除任意鍵值對,并返回該鍵值對,如果字典為空,則產生異常KeyErrord

27、10 = 1:one, 2:two, 3:threeprint d10.popitem()#(1, one)print d10#2: two, 3: threesetdefault(key,default)- 若字典中有key,則返回vlaue 值,若沒有 key,則加上該key,值為 default ,默認 Noned = 1:one, 2:two, 3:threeprint d.setdefault(1)#oneprint d.setdefault(5)#Noneprint d#1: one, 2: two, 3: three, 5: Noneprint d.setdefault(6, s

28、ix) #sixprint d#1: one, 2: two, 3: three, 5: None, 6: sixupdate(dict2)- 把 dict2 的元素加入到dict 中去,鍵字重復時會覆蓋dict 中的鍵值d = 1:one, 2:two, 3:threed2 = 1:first, 4:forthd.update(d2)print d#1: first, 2: two, 3: three, 4: forthviewitems()- 返回一個view 對象,( key, value )pair 的列表,類似于視圖。優(yōu)點是,如果字典發(fā)生變化,view會同步發(fā)生變化。在迭代過程中,字

29、典不允許改變,否則會報異常d = 1:one, 2:two, 3:threefor key, value in d.viewitems():print %s - %s % (key, value)#1 - one#2 - two#3 - threeviewkeys()- 返回一個view 對象, key 的列表d = 1:one, 2:two, 3:threefor key in d.viewkeys():print key#1#2#3viewvalues()- 返回一個view 對象, value 的列表d = 1:one, 2:two, 3:threefor value in d.view

30、values():print value#one#two#three4. 序列序列類型是指容器內的元素從0 開始的索引順序訪問,一次可以訪問一個或者多個元素;列表、元組和字符串都是序列;序列的兩個主要特點是索引操作符和切片操作符;索引可以得到特定元素;切片可以得到部分序列;1 numbers = zero, one, two, three, four23 print numbers1 # one4 print numbers-1 # four5 #print numbers5 # raise IndexError67 print numbers: # zero, one, two, three

31、, four8 print numbers3: # three, four9 print numbers:2 # zero, one10 print numbers2:4 # two, three11 print numbers1:-1 # one, two, three切片操作符中的第一個數(shù)(冒號之前)表示切片開始的位置,第二個數(shù)(冒號之后)表示切片到哪里結束。如果不指定第一個數(shù),Python 就從Python位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外??梢杂秘摂?shù)做切片。負數(shù)用在從序列尾開始計算的位置。5. 綁定當創(chuàng)建一個對象并給它賦一個變量的時候,這個變量僅僅“

32、指向”那個對象,而不是表示這個對象本身!也就是說,變量名指向計算機中存儲那個對象的內存,這被稱作名稱到對象的綁定。如果要復制一個列表或者類似的序列或者其他復雜的對象(不是如整數(shù)那樣的簡單對象),那么必須使用切片操作符來取得拷貝。七、面向對象編程python 支持面向對象編程;類和對象是面向對象編程的兩個主要方面,類創(chuàng)建一個新的類型,對象是這個類的實例。對象可以使用普通的屬于對象的變量存儲數(shù)據(jù),屬于對象或類的變量被稱為域;對象也可以使用屬于類的函數(shù),這樣的函數(shù)稱為類的方法;域和方法可以合稱為類的屬性。域有兩種類型類使用關鍵字- 屬于實例的或屬于類本身;它們分別被稱為實例變量和類變量。class

33、創(chuàng)建,類的域和方法被列在一個縮進塊中。類的方法必須有一個額外的第一個參數(shù),但是在調用時不為這個參數(shù)賦值,這個特殊變量指對象本身,按照慣例它的名稱是 self,類似 C#中的 this。class Animal:pass #empty block_init_ 方法在類的一個對象被創(chuàng)建時調用該方法;相當于_del_方法在類的對象被銷毀時調用該方法;相當于c+ 中的構造函數(shù)。c+ 中的析構函數(shù)。 在使用del 刪除一個對象時也就調用_del_方法。Python 中所有的類成員 (包括數(shù)據(jù)成員 )都是 public 的;只有一個例外,如果使用的數(shù)據(jù)成員以雙下劃線為前綴,則為私有變量。class Per

34、son:Count = 0def _init_(self, name, age):Person.Count += 1 = nameself._age = agep = Person(peter, 25)p1 = Person(john, 20)print Person.Count #2print #peterprint p._age #AttributeError: Person instance has no attribute _age繼承:為了使用繼承,基類的名稱作為一個元組跟在類名稱的后面;python 支持多重繼承。下面是一個關于繼承的例子:1 cla

35、ss SchoolMember:2 Represent any school member.3 def _init_(self, name, age):4 = name5self.age = age6print Initializing a school member.78def tell(self):9Tell my details10print Name: %s, Age: %s, % (, self.age),1112 class Teacher(SchoolMember):13 Represent a teacher.14 def _init_(se

36、lf, name, age, salary):15SchoolMember._init_(self, name, age)16self.salary = salary17print Initializing a teacher1819def tell(self):20SchoolMember.tell(self)21print Salary: %d % self.salary2223 class Student(SchoolMember):24 Represent a student.25 def _init_(self, name, age, marks):26SchoolMember._i

37、nit_(self, name, age)27self.marks = marks28print Initializing a student2930def tell(self):31SchoolMember.tell(self)32print Marks: %d % self.marks3334 print SchoolMember._doc_35 print Teacher._doc_36 print Student._doc_3738 t = Teacher(Mr. Li, 30, 9000)39 s = Student(Peter, 25, 90)4041 members = t, s4243 for m in members:44m.tell()程序輸出如下:Represent any school member.Represent a teacher.Represent a student.Initializing a school member.Initializing a teacherInitializing a school member.Initializing a student Name: Mr. Li, Age: 30,Salary: 9000Name: Peter, Age: 25,Marks: 90八、輸入 /輸出程序與用戶的交

溫馨提示

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

評論

0/150

提交評論