1.匿名函式
# lambda運算式 # 匿名函式 # 沒有名字的函式 相當于 # 優點:節省記憶體空間 優化代碼 # def add(a, b): # return a+b def add(a, b): return a + b # 當函式里面的代碼只有一行的時候可以這樣寫! print(add(1, 2)) # 但函式里面的代碼只有一行,可以轉換為匿名函式.. # lambda 傳入的引數: 回傳的資料 # (lambda a, b: a+b) (lambda a, b: a + b)(1, 2) # 只使用一次 呼叫匿名函式,在后面加括號和引數 add1 = (lambda a, b: a + b) # 定義名字,可重復使用 print(add1(1, 2)) print(add1(2, 6)) # 實踐中一般只使用一次,不需要考慮函式的名字,只需要完成功能

2.遞回
# 遞回特點: # 1.函式內部自己呼叫自己 # 2.必須要有出口 # 有規律的回圈(線性回圈) # 列印 1 ~ 9 def func(start, stop, step=1): # 默認引數 print(start) if start == stop: # 結束 遞回的出口 return # 作用只是結束函式運行,停止遞回 默認是None 空 func(start + step, stop, step) func(1, 9) # range(1, 10, 1)

# 無規律回圈(非線性回圈) list_data = https://www.cnblogs.com/qc2012/p/[1, [2, 3, [4, 5, 6, [7, 8, 9, [0]]]]] # 按照順序列印1,2,3,4,5,6,7,8,9,0 # 如何判斷i是否屬于某個型別 # isinstance(要判斷的變數, 要判斷的型別) # print(isinstance([1, 2], list)) # [1, 2]是list型別,回傳True # print(isinstance([1, 2], str)) # [1, 2]不是str型別,回傳False # for i in list_data: # if type(i) == list: # 也可以這樣 # for j in i: # ... # 一直嵌套 # else: # print(i) def func(data): # if type(data) == list: if isinstance(data, list): for i in data: # 是串列,則更深一層 func(i) else: print(data) # 不是串列,列印 func(list_data)

3.高階函式
# 高階函式 函式里面呼叫另一個函式
# reduce 減 from functools import reduce # from 從什么地方 import 匯入什么東西 list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(reduce(lambda a, b: a + b, list1)) # 1+2=3,3+3=6,6+4=10... list3 = [[1, 2], [3, 4], [5, 6]] # 2+4+6=12 def aa(a, b): if type(a) == list: return a[1] + b[1] else: return a + b[1] print(reduce(aa, list3)) # 12

# map 映射 # map自帶for回圈 # map(一個函式名, 一個資料) list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(map(lambda i: str(i), list1)) # 生成器物件 print(list(map(lambda i: str(i), list1))) # 強轉為list def int_to_list(data): return str(data) print(list(map(int_to_list, list1))) # 注意這里int_to_str只寫了函式名,不是函式呼叫

今日作業
# 5! # 5的階乘 def func(data): # print(data) if data =https://www.cnblogs.com/qc2012/p/= 1: # 出口 return 1 return data*func(data-1) print(func(5))

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539749.html
標籤:Python
