day011_步入百万年薪的第十一天
day11
函數(shù)名的第一類(lèi)對(duì)象及使用
1、可以當(dāng)作值被賦值給變量
def func():print(1)print(func) a = func a()2、當(dāng)作元素存放在容器中
def func():print(1) lst = [func,func,func] for i in lst:i()3、函數(shù)名可以當(dāng)作函數(shù)的參數(shù)
def func(f):f() def foo():print(123) func(foo) --------------------- def func(f):f() def foo():print('is foo') func(foo)4、函數(shù)名可以當(dāng)作函數(shù)的返回值
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版本以上才能使用
- 填充字符串
- 填充變量
- 填充計(jì)算公式
- 填充表達(dá)式
- 填充大括號(hào)(兩個(gè)大括號(hào)算一個(gè))
其他填充
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都是格式化,都可實(shí)現(xiàn)效果。
迭代器
可迭代對(duì)象
list、dict,str,tuple,set——可迭代對(duì)象
方法一:
list.__iter__() dict.__iter__() str.__iter__() set.__iter__() tuple.__iter__()方法二:
查看源碼
方法三:
print(dir(list))**官方聲明只要具有______iter__()方法的就是可迭代對(duì)象**
- 可迭代對(duì)象的優(yōu)點(diǎn):
? 1、使用靈活
? 2、直接查看值
- 可迭代對(duì)向的缺點(diǎn):
? 消耗內(nèi)存,不能迭代取值
list,tuple,str —— 索引
dict ——鍵
set——直接取值
迭代器
官方聲明只要具有______iter______()方法和______next______()方法就是迭代器
f = open("xxxx",'w') f.__iter__() f.__iter__()優(yōu)點(diǎn):節(jié)省內(nèi)存,惰性機(jī)制
缺點(diǎn):使用不靈活,操作比較繁瑣,不能直接查看全部的值
迭代器的特性:
? 1、一次性的(用完就沒(méi)有了)
? 2、不能逆行(不能后退)
? 3、惰性機(jī)制(節(jié)省內(nèi)存):要一個(gè)給一個(gè),不要就不給
當(dāng)容器中數(shù)據(jù)量較大的時(shí)候使用迭代器
for循環(huán)
s = "12343" # 更改版for的本質(zhì) 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真實(shí)本質(zhì)except StopIteration:break ---------------------------- 萬(wàn)能報(bào)錯(cuò) # except Exception:print('我是萬(wàn)能的!')break遞歸
有效遞歸:
- 不斷調(diào)用自己本身(自己調(diào)用自己)
- 有明確的終止條件
遞:一直執(zhí)行直到碰到結(jié)束條件
歸:從結(jié)束條件開(kāi)始往回退
官方聲明:最大層次(1000)可以修改,實(shí)際測(cè)試(998或者997)
def func():print(123)func() func()def age(n): # 1,2,3if n == 3:return "猜對(duì)了"else:age(n+1) print(age(1))def age2(n):if n == 3:return "猜對(duì)了"def age1(n):if n == 3:return "猜對(duì)了"else:++age2(n+1)def age(n):if n == 3:return "猜對(duì)了"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: # 問(wèn)的是不是第四個(gè)了return 18else:return age4(n+1)-2 def age2(n):if n == 4: # 問(wèn)的是不是第四個(gè)了return 18else:return age3(n+1)-2 def age1(n):if n == 4: # 問(wèn)的是不是第四個(gè)了return 18else:return age2(n+1)-2 print(age1(1))轉(zhuǎn)載于:https://www.cnblogs.com/NiceSnake/p/11211057.html
總結(jié)
以上是生活随笔為你收集整理的day011_步入百万年薪的第十一天的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BusinessSkinForm使用
- 下一篇: 数据结构与算法一 - 二叉树基础