Python基礎系列----函數,面向對象,異常

1.前言                                                                                              python

  前面講了一些關於python的一些基本的語法及語句,在這個地方繼續講python的方法及其python核心概念的面向對象。咱們都知道python被稱爲面向對象的語言,那麼在這裏咱們將正式的接觸 的python的核心。函數

2.函數                                                                                              spa

  定義:是可調用的,執行某種行爲並返回一個值。判斷一個函數是否能夠調用,可使用內置的callable函數。在下面的列子中,x返回false,cal返回true。  code

1 def cal():
2     return 'function'
3 x=1
4 
5 print(callable(x))
6 print(callable(cal))

 

  在上面的函數中,咱們能夠在括號中指定參數名稱,這樣就能把咱們須要的參數傳遞到方法函數中。但在傳遞參數過程當中,咱們須要注意函數的做用域,即當前函數在某一段代碼中起做用,在其餘中沒法訪問。兩個相同的值的變量,在表面現象,咱們看起來吃相等的,可是實際在程序中他們是不等。對於在函數中賦值,一樣會存在一個這個問題。例如:  對象

1 names=['a','b','c']
2 n=names[:]
3 
4 print(n is names)
5 
6 print(n==names)

 

  在 ‘n is names’返回false,而‘n==names’返回true。表面上咱們看到的時候n和names的值相等,可是n不必定就是names,這裏會涉及到引用的一個問題,咱們在建立一個變量時,系統會自動爲他分配一個至關因而一個惟一的標識,同理,在這個地方,咱們同時建立了n和names,系統會分配不一樣的標識,雖然n是經過names賦值的。但在這裏只能說他們的值相等,而不能說n就是names。
blog

  如今咱們在函數中傳遞的參數都叫作位置參數,由於他們的位置是不可變的,若是將位置改變以後,那在對應調用函數時,傳遞參數的值的位置也須要發生改變,不然會發生參數傳遞錯誤的現象。在python中,咱們能夠對函數的參數賦默認值,這樣當在調用函數時,若是不須要參入本身想要的參數,那麼能夠不傳。方式爲在參數後面緊跟默認值。繼承

  遞歸
遞歸

   在函數中,函數能夠調用其它函數,可是也能夠調用本身自己。對於調用本身自己的函數,咱們通常稱之爲爲遞歸。
內存

  在遞歸函數中主要包含兩部分:作用域

    1.當函數之間返回值時,有基本實例

    2.遞歸實例,包括一個或者多個問題較小部分的遞歸引用

  關鍵在於將問題分解爲小部分,遞歸不能永遠的執行下去,不然就成了所謂的死循環。由於在遞歸中總以最小可能性問題結束,而這些問題有存儲在基本實例中。    

 

 1 '''
 2 階乘
 3 '''
 4 def factorial(n):
 5     if n==1:
 6         return n
 7     else:
 8         return n*factorial(n-1)
 9     
10 '''
11 12 '''
13 def power(x,n):
14     if n==0:
15         return  1;
16     else:
17         return x*power(x,n-1)

 

3.面向對象                                                                                        

  對象:能夠看做數據(特性)以及由一系列以存取/操做這樣數據的方法所組成的集合。使用對象替代全局變量和函數的緣由有不少,其中對象最重要的優勢主要在如下幾方面:

    1.多態,能夠將不一樣類的對象使用一樣的操做

    2.封裝,對外部世界隱藏對象的工做細節

    3.繼承:以通用的類爲基礎創建專門的類對象

  多態:不知道變量所引用的的對象類型是什麼,仍是能對它進行操做,而它也會根據對象(或類)類型的不一樣而表現出不一樣的行爲。isinstance進行類型/類的檢查

  方法:綁定到對象特性上面的函數

  封裝:向程序中的其餘部分隱藏對象的具體實現細節的原則

    方法和函數的區別在於第一個參數是否爲self。在類中的方法,默認第一個參數爲self,特指當前的引用,而方法咋沒有。

4.異常                                                                                              

  在程序中,咱們常常會遇到一些臨界的界點狀況,好比除數爲0等狀況。默認的解決辦法是在進行操做以前,對數據進行判斷篩選,可是當狀況比較多的時候,這個時候作驗證時就比較麻煩,並且不易於可讀。在python中,存在一種異常處理的機制,使用try ..............  except來進行異常的捕獲處理。在正常的程序中,咱們也可使用raise來觸發一個異常,結束當前的操做。

  python中自置了比較經常使用的幾種異常,可是它的基類爲exception,咱們能夠手動的擴展異常的類型,來豐富咱們的異常處理。固然咱們也能夠直接使用基類exception直接捕獲異常,經過try............except Exception, e    使用對象e來輸出異常的信息。

  在異常處理中,先執行try中的語句塊,若觸發了異常,則執行except中的語句塊。可是在咱們讀取文件時,咱們會打開一系列的對象,若這時觸發了異常,不手動關閉這些對象時,會形成內存必定的損耗。爲了不這種狀況,能夠在except後添加finally。即無論前面執行如何,最後都會執行finally的語句塊。這樣就避免了內存的損耗。           

5.寫在最後                                                                                        

  因爲前期的文章都是先前本身看完的,在這以前的文章,都只是蜻蜓點水的看了一次,並再一次對本身作了一個總結。對於後續的文章,須要本身邊看邊思考邊理解,可能文章更新的進度比較慢,儘可能保證每週2篇,還請你們諒解。若在文中有什麼沒講清楚或者存在錯誤的地方,但願你們多多批評指出,多多交流,你們共同進步。

  若是對你有必定的幫助,麻煩點個

 

 

    若須要轉載,請標明出處!

相關文章
相關標籤/搜索