day011_步入百万年薪的第十一天
生活随笔
收集整理的這篇文章主要介紹了
day011_步入百万年薪的第十一天
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
day11
函數名的第一類對象及使用
1、可以當作值被賦值給變量
def func():print(1)print(func) a = func a()2、當作元素存放在容器中
def func():print(1) lst = [func,func,func] for i in lst:i()3、函數名可以當作函數的參數
def func(f):f() def foo():print(123) func(foo) --------------------- def func(f):f() def foo():print('is foo') func(foo)4、函數名可以當作函數的返回值
def func():def foo():print(123)return foo a = func() a() ----------------------------- def f1():def f2():print(1)def f3():print(2)return f2ret = f2()return ret print(f1())f格式化
python3.6版本以上才能使用
- 填充字符串
- 填充變量
- 填充計算公式
- 填充表達式
- 填充大括號(兩個大括號算一個)
其他填充
s1 = f"{print(123)}" print(s1) --------------------------- def prin(a):print(a) s1 = f"{prin(123)}" prin(s1) --------------------------- def foo():def func():a = 1return areturn func() s1 = f"{foo()}" print(s1) --------------------------- lst = [1,3,4,5,6] s1 = f"{lst[0:5]}" print(s1) # [1,3,4,5,6] --------------------------- dic = {"key1":123,"key2":234} s1 = f"{dic['key2']}" print(s1)%s,format,f都是格式化,都可實現效果。
迭代器
可迭代對象
list、dict,str,tuple,set——可迭代對象
方法一:
list.__iter__() dict.__iter__() str.__iter__() set.__iter__() tuple.__iter__()方法二:
查看源碼
方法三:
print(dir(list))**官方聲明只要具有______iter__()方法的就是可迭代對象**
- 可迭代對象的優點:
? 1、使用靈活
? 2、直接查看值
- 可迭代對向的缺點:
? 消耗內存,不能迭代取值
list,tuple,str —— 索引
dict ——鍵
set——直接取值
迭代器
官方聲明只要具有______iter______()方法和______next______()方法就是迭代器
f = open("xxxx",'w') f.__iter__() f.__iter__()優點:節省內存,惰性機制
缺點:使用不靈活,操作比較繁瑣,不能直接查看全部的值
迭代器的特性:
? 1、一次性的(用完就沒有了)
? 2、不能逆行(不能后退)
? 3、惰性機制(節省內存):要一個給一個,不要就不給
當容器中數據量較大的時候使用迭代器
for循環
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遞歸
有效遞歸:
- 不斷調用自己本身(自己調用自己)
- 有明確的終止條件
遞:一直執行直到碰到結束條件
歸:從結束條件開始往回退
官方聲明:最大層次(1000)可以修改,實際測試(998或者997)
def func():print(123)func() func()def age(n): # 1,2,3if n == 3:return "猜對了"else:age(n+1) print(age(1))def age2(n):if n == 3:return "猜對了"def age1(n):if n == 3:return "猜對了"else:++age2(n+1)def age(n):if n == 3:return "猜對了"else:age1(n+1) age(1) ----------------------------------- 1.寶元 18-2-2-2 2.太白 18-2-2 3.wusir 18-2 4.alex 18def age(n):if n == 4:return 18else:return age(n+1)-2 print(age(1))def age4(n):if n == 4:return 18 def age3(n):if n == 4: # 問的是不是第四個了return 18else:return age4(n+1)-2 def age2(n):if n == 4: # 問的是不是第四個了return 18else:return age3(n+1)-2 def age1(n):if n == 4: # 問的是不是第四個了return 18else:return age2(n+1)-2 print(age1(1))轉載于:https://www.cnblogs.com/NiceSnake/p/11211057.html
總結
以上是生活随笔為你收集整理的day011_步入百万年薪的第十一天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BusinessSkinForm使用
- 下一篇: 数据结构与算法一 - 二叉树基础