標籤:測試 sub code 列表 contains 16進位 進階 函數調用 copy
1.遞迴(自己幹自己)
def fun(n): n=n/2 print(n) if(n>2) fun(n)#函數調用fun(10)
結果是5 2 1 0
遞迴的執行過程:遞迴執行到最裡面一層,外面的層還沒有結束,所以由內而外結束。
證明:
def fun(n): n=n/2 print(n) if(n>2) fun(n) print(n)#函數調用fun(10)
結果是 0 1 2 5
遞迴擷取最後一個值:
def calc(n,count): print(n,count) if count<5: return calc(n/2,count+1) else: return nc=calc(10,1)# print("最後一個值的結果是",c)
遞迴的特性:
1.必須有一個終止條件
2.每次進入更深一層遞迴時,問題規模應該比上次遞迴應當減少。
3.遞迴效率不高,遞迴層次過多會導致棧溢出。
2.內建函數
1 any() 接受一個迭代器,如果迭代器裡有一個元素為真,那麼返回True,否則返回False
2. ascii() 調用對象的__repr__()方法,獲得該方法的傳回值.
3. bin(), 6. oct(), 7. hex() 三個函數功能為:將十進位數分別轉換為2/8/16進位。
4. bool() 測試一個對象是True還是False.
5. bytes() 將一個字串轉換成位元組類型
6. str() 將字元類型/數實值型別等轉換為字串類型
7. challable() 判斷對象是否可以被調用,能被調用的對象就是一個callables對象,比如函數和帶有__call__()的執行個體
8.classmethod() 用來指定一個方法為類的方法,由類直接調用執行,只有一個cls參數,執行雷的方法時,自動將調用該方法的類賦值給cls.沒有此參數指定的類的方法為執行個體方法
9.delattr() 刪除對象的屬性
10. dict() 建立資料字典
11. dir() 不帶參數時返回當前範圍內的變數,方法和定義的類型列表,帶參數時返回參數的屬性,方法列表
1 >>> dir()2 [‘__builtins__‘, ‘__doc__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘li‘, ‘li1‘, ‘li2‘, ‘li_1‘]3 >>> dir(list)4 [‘__add__‘, ‘__class__‘, ‘__contains__‘, ‘__delattr__‘, ‘__delitem__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__getitem__‘, ‘__gt__‘, ‘__hash__‘, ‘__iadd__‘, ‘__imul__‘, ‘__init__‘, ‘__iter__‘, ‘__le__‘, ‘__len__‘, ‘__lt__‘, ‘__mul__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__reversed__‘, ‘__rmul__‘, ‘__setattr__‘, ‘__setitem__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘append‘, ‘clear‘, ‘copy‘, ‘count‘, ‘extend‘, ‘index‘, ‘insert‘, ‘pop‘, ‘remove‘, ‘reverse‘, ‘sort‘]
12. divmod() 分別取商和餘數
13. eval() 將字串str當成有效運算式來求值並返回計算結果
1 >>> s = "1+2*3"2 >>> type(s)3 <class ‘str‘>4 >>> eval(s)5 7
14.hash() 雜湊值
15. id() 返回對象的記憶體位址
16. input() 擷取使用者輸入內容
17. int() 將一個字串或數值轉換為一個普通整數
18. len() 返回對象長度,參數可以是序列類型(字串,元組或列表)或映射類型(如字典)
19 list() 列表建構函式
20. locals() 列印當前可用的局部變數的字典
21. max() 返回給定元素裡最大值
...
...
3.函數進階
名稱空間(存放的是變數名字與值之間關係的地方)
名稱空間共三種:
A.locals:是函數內的名稱空間,包括局部變數和形參
B.globals:全域變數,函數定義所在的模組的名字空間
C.builtins:內建模組的名字空間
範圍的尋找順序:LEGB
local-encosing-globals-builtins
閉包
這種情況是閉包!
def calc(): n=10 def fun(): print(n) return fun()calc()#結果是10 程式走進calc函數沒有執行什麼走到return 這是程式應該是要結束了但 return返回了 fun函數 進入fun函數 根據就近原則得到n=10 返回了10的結果
裝飾器
由於暫時想的不是太全今天就不寫了,不能自圓其說!
python大法好——遞迴、內建函數、函數進階