Python叠加装饰器,三元表达,生成,调用,递归
生活随笔
收集整理的這篇文章主要介紹了
Python叠加装饰器,三元表达,生成,调用,递归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
疊加多個裝飾器的加載、運行分析
def deco1(func1): # func1 = wrapper2的內存地址def wrapper1(*args,**kwargs):print('正在運行===>deco1.wrapper1')res1=func1(*args,**kwargs)return res1return wrapper1def deco2(func2): # func2 = wrapper3的內存地址def wrapper2(*args,**kwargs):print('正在運行===>deco2.wrapper2')res2=func2(*args,**kwargs)return res2return wrapper2def deco3(x):def outter3(func3): # func3=被裝飾對象index函數的內存地址def wrapper3(*args,**kwargs):print('正在運行===>deco3.outter3.wrapper3')res3=func3(*args,**kwargs)return res3return wrapper3return outter3# 加載順序自下而上(了解) @deco1 # index=deco1(wrapper2的內存地址) ===> index=wrapper1的內存地址 @deco2 # index=deco2(wrapper3的內存地址) ===> index=wrapper2的內存地址 @deco3(111) # ===>@outter3===> index=outter3(index) ===> index=wrapper3的內存地址 def index(x,y):print('from index %s:%s' %(x,y))# 執行順序自上而下的,即wraper1-》wrapper2-》wrapper3 index(1,2)yield :可以返回多個返回值
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def dog(name):food_list=[]print('道哥%s準備吃東西啦...' %name)while True:x = yield food_list # x = '肉包子'print('道哥%s吃了 %s' %(name,x))food_list.append(x) # ['一根骨頭','肉包子']g=dog('alex')res=g.send(None) # next(g)print(res)res=g.send('一根骨頭')print(res)三元表達式:
語法格式: 條件成立時要返回的值 if 條件 else 條件不成立時要返回的值
def func():x = 1 if 1 > 3 else 3print(x)func()生成式
1、列表生成式
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' l = ['alex_dsb', 'lxx_dsb', 'wxx_dsb', "xxq_dsb", 'egon'] new_l=[] for name in l:if name.endswith('dsb'):new_l.append(name)new_l=[name for name in l if name.endswith('dsb')] new_l=[name for name in l]print(new_l)2、字典生成式
keys=['name','age','gender'] dic={key:None for key in keys} print(dic)items=[('name','egon'),('age',18),('gender','male')] res={k:v for k,v in items if k != 'gender'} print(res)3、集合生成式
keys=['name','age','gender'] set1={key for key in keys} print(set1,type(set1))遞歸的定義:函數的遞歸調用:是函數嵌套調用的一種特殊形式
具體是指:在調用一個函數的過程中又直接或者間接地調用到本身
代碼的循環運行的方案有兩種
方式一:while、for循環
while True:print(1111)print(2222)print(3333)方式二:遞歸的本質就是循環:
def f1():print(1111)print(2222)print(3333)f1() f1()強調:遞歸調用不應該無限地調用下去,必須在滿足某種條件下結束遞歸調用
return 可以結束調用
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def f1(n):if n == 10:returnprint(n)n+=1f1(n)f1(0)遞歸的兩個階段:
回溯:一層一層調用下去
遞推:滿足某種結束條件,結束遞歸調用,然后一層一層返回
總結
以上是生活随笔為你收集整理的Python叠加装饰器,三元表达,生成,调用,递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python对字符串和集合的内存垃圾回收
- 下一篇: python教程:有参装饰器