今天主要記錄,Python中函數的使用以及異常處理.
一.函數:
1.函數的創建以及調用.
def Add(val1,val2): return val1+val2;PRint Add(1,2)
2. 定義返回多參數的函數,返回的參數以元組的形式返回,可以通過下表索引來獲取單個值,下面是獲取兩數之差和兩數之和的函數. 整體上來說還是不錯的,在C#中我們一般都用out來實現,多個參數改變返回,不過那樣可讀性不好。
def GetSubAndSum(val1,val2): return val1-val2,val1+val2print GetSubAndSum(2,3) #Answer:(2,3)print GetSubAndSum(2,3)[0] #Answer(2)
3. 函數實現多參數. 下面例子實現任意參數的參數和. 通過*可以實現多參數。1個*號轉換為元組,2個*號轉換為字典,至于3個*號沒試過,想想應該沒人會川那么復雜的數據呀。
def sumList(*param): sumNumber=0 for val in param: sumNumber+=val return sumNumberprint sumList(1,2,3) >>6def showList(*param): print paramshowList(1,2,3)>>(1,2,3)showList()>>()def showDic(**param): print(param)showDic(Name='Frank',Age=23)>>{'Age': 23, 'Name': 'Frank'}
5. 函數的遞歸,遞歸說明白點就是函數內部自己調用自己,下面來看看通過遞歸來求n!
Note: 當N<1 無值返回,所以為None
def Fun(N): if(N==1): return 1 elif(N>1): return N*Fun(N-1)print Fun(3)>>6print Fun(-1)>>None
二. 函數的異常處理 :
既然有函數,必定有的函數可能會出錯,那如何捕獲異常呢.Python中使用 try....except.....finally 來實現.
1. 異常的類型: 【請原諒我的偷懶.】,對于實際開發中,個人認為應該是Exception用的多,其實我們更多的不會去關心是什么錯,后面這些錯誤在程序中應該都會去通過代碼避免,或者自己去自定義Exception。
2. Try....Except使用.
def Div(val1,val2): try: return val1/val2 except ZeroDivisionError: return 'Error'print Div(1,0)>>Error
3. 捕獲多個異常,并且打印出異常. 通過Exception可以將所有異常捕獲
def Div(val1,val2): try: return val1/val2 except (ZeroDivisionError,TypeError),E: return Eprint Div(1,0)print Div(1,'2')>>integer division or modulo by zero>>unsupported Operand type(s) for /: 'int' and 'str'
4.finally 在異常捕獲的用處,不論是否有異常finally的代碼段都會執行,一般用途比如在讀取文件的時候可以在finally里面關閉文件流,這樣就不會導致文件流不關閉,文件崩潰
def Div(val1,val2): try: return val1/val2 except (ZeroDivisionError,TypeError),E: return E finally: print("No matter whether there have error,I will Excute")print Div(1,'2')print Div(1,1)>>No matter whether there have error,I will Excute>>unsupported operand type(s) for /: 'int' and 'str'>>No matter whether there have error,I will Excute>>1
5. 問題來了,finally既然一定都要執行,那么一個方法里面如果finally代碼塊里面有【返回值】,try 里面也有【返回值】,那調用該方法會獲取什么數據呢.那就來看下面的代碼吧.
Note:都是返回finally的,不清楚為何有這種設計。
def Div(val1,val2): try: return val1/val2 except (ZeroDivisionError,TypeError),E: return E finally: return 'I am finally'print Div(1,'2')print Div(1,1)>>I am finally>>I am finally
三.總結:
本章記錄了函數的創建和基本使用。以及異常的使用. 還有很多需要后面繼續學習,比如:
1.【Python中如何拋出異常,沒找到,.Net里面可以通過throw,畢竟在開發中遇到異常,有時候我們需要進一步封裝異常往上層代碼拋】
2.【如何自定義異常,是類似于C#的繼承Exception類嗎?這個還得等后面幾天把Python抽象方面的知識學了才知道】
3.【lamba的學習,fitter,map,reduce的學習.后面應該會用專門一個博客來記錄學習筆記.】
新聞熱點
疑難解答