1. 程式人生 > >假期(函數相關)

假期(函數相關)

檢測 ret 思維 自定義函數 缺點 協程 包含 shu 綁定

"""
1、什麽是函數
    - 函數就是一個代碼塊
2、為什麽要用函數(定義函數)
    - 為了實現代碼的重用性
    - 函數即變量,必須先定義,後飲用
3、函數的分類:
    內置函數:如:print,list,tuple,dict等python內置好的函數,在python內部任何地方都可以調用
    自定義函數:假如內置函數不能滿足我們對於某些功能的需求,就需要自定義一些函數
4、如何定義函數
    定義函數都幹了什麽事?
        - 只檢測語法,不執行代碼
    語法   def func():pass       def 關鍵字,func函數名,()   :
    定義有參函數,以及有參函數的應用場景
        def func(name):pass         - 根據外部傳進來的數據進行邏輯判斷
    定義無參函數,以及無參函數的應用場景
        def func():pass             - 僅僅執行一些操作,比如用戶交互,打印等
    定義空函數,以及空函數的應用場景
        - 設計代碼結構
5、調用函數
    如何調用函數
        - 先找到名字,然後根據名字調用↓
        - 函數名()
    函數的返回值
        - 不寫默認返回None
        - return其它(一個值|元組)
    函數的返回值必須有嗎?
        - 有:調用函數,經過一系列的操作,最後要拿到一個明確的結果,則必須要有返回值
        - 無:···,不需要得到什麽結果,則不需要有返回值
    函數參數的應用:形參和實參,位置參數,關鍵字參數,默認參數,*arg,**kwargs
    函數調用的三種形式:
        - 1、語句形式:foo()
        - 2、表達式形式:3*len("hello")
        - 3、當另一個函數的參數:range(len("hello"))
    函數的參數:
        - 形參和實參定義
        - 形參即變量名,實參即變量值,函數調用將值綁定到名字上,函數調用結束,接觸綁定
    註意:
        - 默認參數只在定義的時候賦值一次
6、高階函數(函數對象)
    - 函數時第一類對象,即函數可以當做數據傳遞
    - 可以被引用
    - 可以作為返回值
    - 可以當做容器類元素
7、函數嵌套
    - 函數裏面的函數
8、作用域與名稱空間
    - golbal
    - local
    - 名稱空間:存放名字的地方,三種名稱空間(x=1,1存放在內存,x存放的地方就是名稱空間)
    - 加載順序:函數內的名字空間→外部嵌套的函數→全局→內置模塊的名字空間
9、裝飾器
    - 閉包函數:內部函數包含對外部作用域而非全局作用域的引用
    - 閉包的意義:返回的函數對象,不僅僅是一個函數對象,在該函數外還包裹了一層作用域
    - 應用領域:延遲計算
    - 本質(閉包函數),
    - 調用方式  (語法)
        - @函數名  =====>語法糖
    - 為何要用裝飾器
        - 開放封閉原則:對修改封閉,對擴展開放
        - 在不修改源代碼的前提下增加新功能
10、叠代器、生成器以及協程函數
    - 概念:重復的過程稱之為叠代,沒重復一次即一次叠代,本次的叠代結束值是下次的初始值
    - 有__iter__方法
    - 優點:惰性計算,節省內存;缺點:無法獲取長度,只能往後走
11、三元運算,列表解析,生成器表達式
    - 三元運算:res = "SB" if name=="alex" else "shuai"
    - 列表解析:[(i*i) for i in range(10)]
    - 生成器表達式(用的時候才給);語法與列表推倒式一樣,只是[] 變為()
        - 節省內存,一次只產生一個值
        - 應用:讀取大的文件慢慢讀取,而不是一下子吧內存撐爆
12、函數的遞歸調用
    - 遞歸和回溯
    - 遞歸的效率低
    在一個函數內部再次調用這個函數,遞歸函數一定要有結束條件
13、內置函數
    - python內部就有的函數
14、面向過程編程與函數式編程
    - 面向過程:機械師思維,流水線式編程
    - 函數式編程:壘代碼
"""

假期(函數相關)