02Python-函式的第一類物件及使用-f格式化-迭代器-遞迴
阿新 • • 發佈:2020-11-20
目錄
Day11
函式名的第一類物件及使用
1.可以當做值被賦值給變數 2.當做元素存放在容器中 3.函式名可以當做函式的引數 4.函式名可以當做函式的返回值 # def func(): # print(1) # # print(func) # a = func # a() # def func(): # print(1) # # lst = [func,func,func] # for i in lst: # i() # def func(f): # f() # def foo(): # print(123) # func(foo) # def func(): # def foo(): # print(123) # return foo # a = func() # a()
f格式化
python3.6版本及以上才能夠使用
s = f"Hello {'world'}" # 填充字串 # s1 = F"Hello {'world'}" s1 = f"你好呀{s}" # 填充變數 s2 = f"{11+22}" # 填充計算公式 print(s) print(s1) print(s2) a = 10 b = 20 s1 = f"{a if a>b else b}" # 填充表示式 s2 = f"{{{{'xiaoming bubeiguo'}}}}" # 填充大括號 print(s1) print(s2)
迭代器 -- 工具
可迭代物件:
優點:使用靈活,可以直接檢視值
缺點:佔記憶體,不能迭代取值
迭代器:
優點:節省記憶體,惰性機制
缺點:使用不靈活,操作比較繁瑣,不能直接檢視元素
迭代器的特性:
1.一次性的(用完就沒有了)
2.不能逆行(不能後退)
3.惰性機制(節省記憶體)
什麼是可迭代物件:
具有很多私有方法,具有__iter__()方法的就是一個可迭代物件
什麼是迭代器:
具有__iter__()和__next__()方法的就是迭代器
迭代器什麼時候使用:當容器中資料量較多的時候使用迭代器
可迭代物件
list,dict,str,set,tuple -- 可迭代物件 使用靈活 方式一: list.__iter__() dict.__iter__() str.__iter__() set.__iter__() tuple.__iter__() 方法二: 檢視原始碼 方法三: print(dir(list)) 官方宣告只要具有__iter__()方法的就是可迭代物件 可迭代物件的優點: 1.使用靈活 2.直接檢視值 可迭代物件的缺點: 1.消耗記憶體 迭代物件取值方式 list,tuple,str -- 索引 dict -- 鍵 set -- 直接取值
迭代器
官方宣告只要具有__iter__()方法__next__()方法就是迭代器
f = open("xxxx","w")
f.__iter__()
f.__next__()
lst = [1,2,3,4,6]
new_list = lst.__iter__() #將可迭代物件轉換成迭代器
new_list.__iter__()
new_list.__next__()
s = "123434"
new_s = s.__iter__() #將可迭代物件轉換成迭代器
print(new_s)
new_s.__iter__()
new_s.__next__()
new_s = s.__iter__() #將可迭代物件轉換成迭代器
print(new_s)
new_s.__iter__()
print(new_s.__next__())
print(new_s.__next__())
print(new_s.__next__())
s = "12343" # 更改版for的本質
# s = [1,2,3,4,5,7]
count = len(s)
new_s = s.__iter__()
while count:
print(new_s.__next__())
count -= 1
s = "12345"
new_s = s.__iter__()
while True:
try:
print(new_s.__next__()) # for真實本質
except StopIteration:
break
except Exception:
print("萬能異常捕獲")
break
遞迴
1.自己呼叫自己 (不斷呼叫自己本身) -- 死遞迴
2.有明確的終止條件
滿足以上兩個才是有效遞迴
遞:一直執行直到碰到結束條件
歸:從結束條件開始往回退
官方宣告: 最大層次1000,實際測試 998/997
def func():
print(123)
func()
func()