1.Python中的邏輯結構
①順序執行
②選擇執行:
if...elif...else...
沒有switch..case..
③循環執行:
for...in...
while...
沒有do..while...
注意: if/for/while后面不使用{ }, 而用 : 代替; 下面一句必須有縮進(可以是TAB或若干空格); 再下面一句如果也是執行主體必須有同樣的縮進!
循環語句中,可以使用關鍵字:break(打斷循環) 和 continue(繼續下一次循環)
if( ): pass |
if( ): pass else: pass |
if( ): pass elif( ): pass else: pass |
while( ): pass |
||
for 臨時變量 in list/tuple/range/set/dict : pass |
2.Python中使用函數
定義:函數用於封裝一批需要反復執行的代碼
創建函數:
def 函數名( 形參列表 ) :
函數主體
return 返回值
調用函數:
變量 = 函數名( 實參列表 )
注意:Python中實參的個數必須與形參個數完全一樣!!!
默認值參數:
def add(n1, n2=200):
pass
調用可以有兩種形式:
add(10) #n1=10; n2=200
add(10, 20) #n1=10; n2=20
注意:有默認值的形參必須聲明在所有無默認值的形參之后!
可變數量的參數:
def add( *nums ):
pass #此處的nums是一個tuple
add(10, 30, 50)
-----------------------------------------------------
def add( **money ):
pass #此處的money是一個dict
add(jan=1000, feb=3000, may=5000)
關鍵字參數:
如果函數的形參過多,因為順序很重要,不方便記憶,實參列表中可以使用關鍵字參數:每個實參都有一個名字——該實參對應的形參名
def connect(host, user, pwd, port, dbname):
pass
connect(user='root', pwd='123456', port=3306, dbname='xz', host='127.0.0.1')
3.變量的作用域問題 —— 難點
Python中,變量的作用域分為四類:簡稱LEGB
①Local:本地作用域,指定義在函數內的變量,只能在當前函數內使用
②Embeded:嵌入作用域,或稱為閉包作用域,指定義在外部函數,但要供內部函數在外部使用的變量
③Global:全局作用域,指定義在任意函數外面,可供當前腳本中的任意函數使用
④Built-In:內置作用域,指Python解釋器提供的變量和函數,可以在任意腳本中使用
總結:四種作用域下若都有某個變量,其優先級為:Local > Embeded > Global > Built-In
class:類,是一組事物共性的抽象——類是抽象的,沒有具體值的
class = attributes + methods
object:對象,是從屬於某個類的一個具體實例——對象是具體的
面向對象的三個基本特征:
①封裝:把原本離散的數據和操作包裝為一個整體——定義class
class Emp :
def __init__(self, age, ename) : #構造方法
self.age = age #封裝屬性
self.ename = ename #封裝屬性
def printInfo(self): #封裝方法
print(self.ename, self.age)
e2 = Emp(20, 'Tom') #構建實例不要使用new關鍵字
②繼承:讓一個類自動獲取另一個類中全部的成員,從而提高代碼可維護性
class Emp:
pass
class Coder( Emp ): #Python支持多繼承
def __init__(self)
super().__init__() #在子類構造方法內調用父類構造方法
c3 = Coder( ) #創建子類對象,其體內有一個父類的對象
③多態:一個方法,根據對象的不同(父或子),可能運行出多種結果
class Emp:
def printInfo():
pass
class Coder(Emp):
def printInfo(): #子類重寫/覆蓋了父類的同名方法
pass
-------------------------------------
e = Emp()
e.printInfo() #第一次調用
e = Coder()
e.printInfo() #第二次調用,與第一次調用結果不同
說明:
①Python中沒有private/protected/public訪問修飾符,如果想讓一個屬性只能在本類內部使用不能在類外使用:只需要在屬性名前添加兩個下划線即可;例如: self.__age = 30
②Python中沒有static關鍵字,想實現類似的效果,可使用“類屬性”——直接聲明在類內(不是方法內),且不用self.來訪問:
class Emp:
location = '中國' #類屬性,訪問方法:Emp.location
def __init__(self):
self.age = 30 #實例屬性
5.Python中的異常處理
Exception:異常,可能發生也可能不發生錯誤!如果沒發生程序可以正常執行下去;反之若發生了就可能導致程序終止執行。
示例:請用戶從鍵盤輸入兩個數字,程序計算出數字的商,輸出在屏幕上
try:
#可能發生異常的語句
#...
except XxError as e:
print(e)
except YyError as e:
print(e)
except Exception as e:
print(e)
finally:
#無法異常發生與否都要執行的收尾處理
如果需要根據業務邏輯,可以手工拋出錯誤: raise Exception('錯誤消息') 注意:手工拋出的錯誤也必須被try..except... |