Python的邏輯結構和函數


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...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM