云志學(xué)Python 2018-08-18 17:28:18 今天小編給大家?guī)鞵ython編程入門——基礎(chǔ)語法詳解,。溫馨提示:亮點在最后! 一,、基本概念1.內(nèi)置的變量類型: Python是有變量類型的,,而且會強制檢查變量類型。內(nèi)置的變量類型有如下幾種: #浮點 float_number = 2.3 #復(fù)數(shù) complex_number = 1 + 5j #整型 integer_number = 1 #list 序列 sample_list = [2,52,36,'abc'] #嵌套 sample_nest = [(2,4,6),{5:7,9:11,'key':[2,5]},6] #dictionary 字典 sample_dic = {"key":value, 5:10} #tuple 只讀的序列 sample_tuple = (3,9,"ab") 從上面的示例可以看出,,python的變量無需聲明,,可直接給變量賦值,。 2.字符串 python中聲明一個字符串通常有三種方法,'',、" "和''' ''',,這三種方法在聲明普通字符串時的效果是完全一樣的,,區(qū)別在于字符串本身中存在引號的情況,,舉例如下: word = 'good' sentence = "hello world" paragraph = '''good noon:"nice to meet you."''' python中單行注釋采用#開頭。 #!/usr/bin/python # First comment print "Hello, world!"; # second comment 上述內(nèi)容輸出:hello,Python!,。注釋可以在語句或表達式行末,。 多行注釋可采用三引號,比如: '''This is a comment. This is a comment, too. This is a comment, too. I said that already.''' 轉(zhuǎn)義符 '',; 自然字符串,, 通過在字符串前加r或R。 如 r"this is a line with " 則 會顯示,,并不是換行,。 python允許處理unicode字符串,加前綴u或U,, 如 u"this is an unicode string",。 3.Python標(biāo)識符 在python里,標(biāo)識符有字母,、數(shù)字,、下劃線組成。 在python中,,所有標(biāo)識符可以包括英文,、數(shù)字以及下劃線(_),但不能以數(shù)字開頭,。 python中的標(biāo)識符是區(qū)分大小寫的,。 以下劃線開頭的標(biāo)識符是有特殊意義的。以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,,需通過類提供的接口進行訪問,,不能用"from xxx import *"而導(dǎo)入; 以雙下劃線開頭的(__foo)代表類的私有成員,;以雙下劃線開頭和結(jié)尾的(__foo__)代表python里特殊方法專用的標(biāo)識,,如__init__()代表類的構(gòu)造函數(shù)。 4.Python保留字符 下面的列表顯示了在Python中的保留字,。這些保留字不能用作常數(shù)或變數(shù),,或任何其他標(biāo)識符名稱。 所有Python的關(guān)鍵字只包含小寫字母,。 5.行和縮進 學(xué)習(xí)Python與其他語言最大的區(qū)別就是,,Python的代碼塊不使用大括號({})來控制類,,函數(shù)以及其他邏輯判斷。python最具特色的就是用縮進來寫模塊,。 縮進的空白數(shù)量是可變的,,但是所有代碼塊語句必須包含相同的縮進空白數(shù)量,這個必須嚴(yán)格執(zhí)行,。如下所示: if True: print "True" else: print "False" 上述,,if與else的縮進空白數(shù)量相同。以下代碼將會報錯: if True: print "Answer" print "True" else: print "Answer" print "False" python中分號;標(biāo)識一個邏輯行的結(jié)束,,但是實際中一般每個物理行只寫一個邏輯行,,可以避免使用分號。這樣書寫便于閱讀,。注意:不要混合使用空格和制表符來縮進,,因為在跨越不同的平臺時無法正常工作。 多個物理行中可以寫一個邏輯行,,使用行連接符,,如下: s = "peter is writing this article" 二、運算符與表達式1. 運算符與其用法 2. 運算符優(yōu)先級(從低到高) 三.控制流1. 條件語句 1.1 if語句 例子,, 執(zhí)行if語句內(nèi)的程序 a = input("a:") b = input("b:") if(a > b): print a, " > ", b if else語句: a = input("a:") b = input("b:") if(a > b): print a, " > ", b else: print a, " < ", b 1.2 if…elif…else語句 例子:根據(jù)輸入的分?jǐn)?shù),,輸出分?jǐn)?shù)等級: score = raw_input("score:") score=int(score) if(score >= 90) and (score <= 100): print "A" elif(score >= 80) and (score < 90): print "B" elif(score >= 60) and (score < 80): print "C" else: print "D" raw_input() 讀取輸入值。 1.3 if語句的嵌套 編寫條件語句時,,應(yīng)該盡量避免使用嵌套語句,。嵌套語句不便于閱讀,而且可能會忽略一些可能性,。 x = -1 y = 99 if(x >= 0): if(x > 0): #嵌套的if語句 y = 1 else: y = 0 else: y = -1 print "y =", y 1.4 實現(xiàn)switch語句的功能 python中沒有switch特殊字,,Python可以通過字典實現(xiàn)switch語句的功能。 實現(xiàn)方法分兩步,。首先,,定義一個字典。字典是由鍵值對組成的集合,。其次,,調(diào)用字典的get()獲取相應(yīng)的表達式。 from __future__ import division x = 1 y = 2 operator = "/" result = { "+" : x + y, "-" : x - y, "*" : x * y, "/" : x / y } print result.get(operator) 輸出為0.5,; 另一種使用switch分支語句的方案是創(chuàng)建一個switch類,,處理程序的流程。 a) 創(chuàng)建一個switch類,,該類繼承自Python的祖先類object,。調(diào)用構(gòu)造函數(shù)init( )初始化需要匹配的字符串,并需要定義兩個成員變量value和fall,。Value用于存放需要匹配的字符串,,fall用于記錄是否匹配成功,,初始值為false,標(biāo)識匹配不成功,。如果匹配成功,,程序往后執(zhí)行。 b) 定義一個match( )方法,,該方法用于用于匹配case子句,。這里需要考慮三種情況:首先是匹配成功的情況,其次是匹配失敗的默認(rèn)case子句,,最后是case子句中沒有使用break中斷的情況,。 c) 重寫__iter__( )方法,定義該方法后才能使switch類用于循環(huán)語句中,。__iter__( )調(diào)用match( )方法進行匹配。通過yield保留字,,使函數(shù)可以在循環(huán)中迭代,。此外,調(diào)用StopIteration異常中斷循環(huán),。 d) 編寫調(diào)用代碼,,在for…in…循環(huán)中使用switch類。 #!/usr/bin/python # -*- coding: UTF-8 -*- class switch(object): def __init__(self, value): # 初始化需要匹配的值value self.value = value self.fall = False # 如果匹配到的case語句中沒有break,,則fall為true,。 def __iter__(self): yield self.match # 調(diào)用match方法 返回一個生成器 raise StopIteration # StopIteration 異常來判斷for循環(huán)是否結(jié)束 def match(self, *args): # 模擬case子句的方法 if self.fall or not args: # 如果fall為true,則繼續(xù)執(zhí)行下面的case子句 # 或case子句沒有匹配項,,則流轉(zhuǎn)到默認(rèn)分支,。 return True elif self.value in args: # 匹配成功 self.fall = True return True else: # 匹配失敗 return False operator = "+" x = 1 y = 2 for case in switch(operator): # switch只能用于for in循環(huán)中 if case('+'): print x + y break if case('-'): print x - y break if case('*'): print x * y break if case('/'): print x / y break if case(): # 默認(rèn)分支 print "" 2.while...語句 只要在一個條件為真的情況下,while語句允許你重復(fù)執(zhí)行一塊語句,。while語句是所謂 循環(huán) 語句的一個例子,。while語句有一個可選的else從句。 while True: pass else: pass #else語句可選,,當(dāng)while為False時,,else語句被執(zhí)行。 pass是空語句,。 3.for 循環(huán) for i in range(0, 5): print i else: pass # 打印0到4 注:當(dāng)for循環(huán)結(jié)束后執(zhí)行else語句,;range(a, b)返回一個序列,從a開始到b為止,,但不包括b,,range默認(rèn)步長為1,可以指定步長,,range(0,10,2),; 四,、函數(shù)函數(shù)通過def定義。def關(guān)鍵字后跟函數(shù)的標(biāo)識符名稱,,然后跟一對圓括號,,括號之內(nèi)可以包含一些變量名,該行以冒號結(jié)尾,;接下來是一塊語句,,即函數(shù)體。 def sumOf(a, b): return a + b 4.1 局部變量 在函數(shù)內(nèi)定義的變量與函數(shù)外具有相同名稱的其他變量沒有任何關(guān)系,,即變量名稱對于函數(shù)來說是局部的,。這稱為變量的作用域。global語句,, 為定義在函數(shù)外的變量賦值時使用global語句,。 def func(): global x print "x is ", x x = 1 x = 3 func() print x 以上代碼,輸出的結(jié)果為: 3 1 4.2 默認(rèn)參數(shù) 通過使用默認(rèn)參數(shù)可以使函數(shù)的一些參數(shù)是‘可選的’,。 def say(msg, times = 1): print msg * times say("peter") say("peter", 3) 注意:只有在形參表末尾的那些參數(shù)可以有默認(rèn)參數(shù)值,,即不能在聲明函數(shù)形參的時候,先聲明有默認(rèn)值的形參而后聲明沒有默認(rèn)值的形參,,只是因為賦給形參的值是根據(jù)位置而賦值的,。 4.3 關(guān)鍵參數(shù) 如果某個函數(shù)有很多參數(shù),而現(xiàn)在只想指定其中的部分,,那么可以通過命名為這些參數(shù)賦值(稱為‘關(guān)鍵參數(shù)’),。 優(yōu)點:不必?fù)?dān)心參數(shù)的順序,使函數(shù)變的更加簡單,;假設(shè)其他參數(shù)都有默認(rèn)值,,可以只給我們想要的那些參數(shù)賦值。 def func(a, b=2, c=3): print "a is %s, b is %s, c is %s" % (a, b, c) func(1) #輸出a is 1, b is 2, c is 3 func(1, 5) #輸出a is 1, b is 5, c is 3 func(1, c = 10) #輸出a is 1, b is 2, c is 10 func(c = 20, a = 30) #輸出a is 30, b is 2, c is 20 4.3 return語句 return語句用來從一個函數(shù)返回,,即跳出函數(shù),。可從函數(shù)返回一個值,。 沒有返回值的return語句等價于return None,。None表示沒有任何東西的特殊類型。 |
|