python2

函數
    函數的特徵
        函數的定義必須使用def關鍵字
        函數的命名規則
            不能是用特殊字符,除 _
            嚴格區分帶大小寫
            避免使用關鍵字
    函數的定義
        def 函數名():
            函數中的功能代碼
        調用函數:函數名()
    具備參數的函數結構
        def  函數名( 參數名, 參數名 。。 ):
            函數中的代碼
            h函數的代碼
        調用函數:函數名(值, 值)
        聲明函數中的參數稱之爲形參 , 形參表示形式上的參數
        調用函數中的參數稱之爲實參 , 實參表示真實的值
    具備默認值參數的函數
        def 函數名(形參名  = 默認值 ,形參名  = 默認值。。。  ):
            函數中的代碼
        調用函數1: 函數名()
        調用函數2: 函數名( 實參 , 實參。。)
    注意
        具備默認值的函數,調用時若是不提供實參,則會使用形參的默認值執行,若是提供了實參,則使用實參而忽略默認值
    函數的返回值
        函數更具執行以後是否能夠德奧值能夠將函數分爲兩類:
        執行過程函數
            函數執行完畢, 什麼也得不到的函數稱之爲執行過程函數
        具備返回值的函數
            函數執行完畢以後能夠獲得一個值的函數稱之爲具備返回值的函數
    return語句的使用
        1.若是函數執行完畢須要的到一個結果做爲反饋,須要添加return語句
        2.return語句能夠爲當前函數返回一個結果
        3.一旦程序運行了return語句,那麼函數結構機會結束。
        4.return通常只能返回一個值,若是須要返回多個數據能夠將其組成序列類型,在返回便可
            格式
            def 函數名():
                函數中的代碼
                函數中的代碼
                return語句
    函數文檔
    函數文檔的做用是對當前函數提供使用相關的參考信息
        查看函數文檔:
            1.使用help()查看文檔信息
            使用函數名.__doc__的方式查看,
        自定義函數文檔

""" 在函數內部開始的第一行使用字符串定義文字內容便可 def 函數名():     '此處書寫函數文檔信息,單引號中使用\n換行'     函數中的其餘代碼...     函數中的其餘代碼... 或者 def 函數名():     '''     此處書寫函數文檔信息     此處書寫函數文檔信息     ...     函數中的其餘代碼...     函數中的其餘代碼... """     lambda表達式     lambda表達式就是一種簡潔格式的函數而已。lambda不是一種函數結構,只是一種表達式並且不須要函數名。(匿名函數) ''' 格式:     變量 = lambda 形參,形參...: 功能代碼 案例:     lambda x,y :x*y     傳入兩個參數返回這兩個數的乘積、     lambda x: 值1  if 條件表達式 else 值2 根據條件表達式的真假返回值1仍是值2 優勢: 1.lambda表達式書寫簡單,不用def關鍵字,惋惜要用lambda 2.lambda表達式不須要函數名,免得命名頭疼 3.看起來比較裝逼! 缺點: 1.lambda表達式功能受限,沒法使用循環以及部分流程控制相關語句 2.lambda表達式不適合較爲複雜的程序。 ''' 關鍵字參數 ''' def 函數名(形參名 = 默認值,形參名 = 默認值...):     函數中的代碼(python語句)     函數中的代碼(python語句) 調用函數:     函數名(形參名 = 實參值,形參名 = 實參值...) 優勢:因爲實參和形參傳遞是按照位置一一對應的關係, 當參數太多時容易出現參數傳錯位置的狀況 引入關鍵字參數後,在設置實參時能夠指定形參的名稱,避免參數傳遞錯誤! ''' 收集參數 ''' 1.收集參數1   (專用於收集非關鍵字參數) def 函數名(*形參名):     函數中的代碼(python語句)     函數中的代碼(python語句)     ... 調用函數: 函數名(實參,實參....) **注意**: 1.使用收集參數進行形參的書寫,須要在形參名以前添加* 2.*形參格式的收集參數會收集到調用函數時傳入的全部沒有關鍵字的形參 3.收集參數收集到的最終數據是由全部非關鍵字實參組成的元組。 4.收集參數和普通的參數(關鍵字參數)能夠共存 2.收集參數2 (專門用於收集關鍵字參數) def 函數名(**args):     函數中的代碼(python語句)     函數中的代碼(python語句)     ... 調用函數:函數名(形參名 = 值,形參名=值...) **注意** 1.使用收集參數收集關鍵字實參的方法須要在形參名以前加** 2.**形參格式會收集調用函數時傳入函數的全部關鍵字參數 3.收集的全部關鍵字參數最終組成的數據爲字典類型 4.關鍵字參數收集的方式能夠和普通形參共存,可是必須在最後 ''' 注意1:普通參數,非關鍵字手機形參和關鍵字手機形參具備順序關係     普通參數在最前面     非關鍵字放中間     關鍵字形參放最後 注意2:全部手機參數只可以手機沒有形參接受的實參 函數變量的做用域 變量分爲兩個大類     全局變量         在函數外部聲明的變量就是全局變量     局部變量         在函數內部聲明的變量就是局部變量 局部變量和局部變量     1.全局變量在全局範圍內可使用     2.全局變量在局部範圍內可使用(訪問)     3.局部變量在局部範圍內可使用     局部變量在全局範圍內沒法正常使用 global關鍵字 做用能夠提高局部變量維全局變量 ''' 使用global關鍵字便可提高局部變量爲全局變量 def 函數名()     提高局部變量爲全局變量     global 局部變量     其餘操做... ''' 全局變量和局部變量同名是 局部環境中只會使用局部變量,忽略同名的全局變量 內部函數     在函數內部聲明的函數就是內部函數,     特徵         內部函數在函數內部能夠訪問         內部函數的調用必須在定義內部函數以後         內部函數不能夠在函數外部調用         本質上內部函數等同於內部變量 閉包  (少用  或者  不用) ''' 閉包格式:     def 外層函數():         局部變量         局部變量         ...         def 內部函數():             pass         def 內部函數():             pass         return (局部變量,局部變量...內部函數,內部函數...) ''' nonlocal關鍵字 nonlocal的做用是聲明當前變量不是當前函數內部的變量,他有多是當前函數的外部變量(不是全局變量) ''' def 外部函數()     局部變量     def 內部函數():         nonlocal 變量名聲明當前變量不是內部函數中的變量         其餘代碼...     return 代碼 ''' 遞歸函數     在函數中調用當前函數本省的函數就是遞歸函數 ''' 定義遞歸函數 def recursion(n):     輸出當前的n的值     print(n)     判斷n的值是否>0,決定下一步操做     if n>0:        n>0 在此調用當前函數digui,將n - 1放進去         recursion(n-1)     else:         n>0 爲False 輸出分隔線         print('------')     再次輸出n的值     print(n) 調用遞歸函數 recursion(3) 遞歸函數的優勢是定義簡單,邏輯清晰。理論上,全部的遞歸函數均可以寫成循環的方式,但循環的邏輯不如遞歸清晰。 使用遞歸函數須要注意防止棧溢出。在計算機中,函數調用是經過棧(stack)這種數據結構實現的,棧的特色是先進後出, 每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。因爲棧的大小不是無限的, 因此,遞歸調用的次數過多,會致使棧溢出。 解決遞歸調用棧溢出的方法是經過定義遞歸的出口,就是在條件不知足的時候咱們就再也不調用自身來遞歸了, 上面的遞歸在n不大於0的時候就不會再接着遞歸自身了,這樣就不會一直遞歸下去直到遞歸溢出了 '''
相關文章
相關標籤/搜索