假期(函數相關)
阿新 • • 發佈:2018-02-13
檢測 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、面向過程編程與函數式編程 - 面向過程:機械師思維,流水線式編程 - 函數式編程:壘代碼"""
假期(函數相關)