老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

生成器和面向編程

            生成器
只要在函數體內出現yield關鍵字,那么再執行函數就不會執行函數代碼,會得到一個結果,該結果就是生成器。
生成器就是迭代器。
def foo():
    print('add')
    yield 1
    print('sidhi')
    yield 2
g=foo()
next(g)

res1=next(g)
print(res1)

yield的功能:
1.yield為我們提供了一種自定義迭代器對象的方法。
2.yield與retuen的區別,yield可以返回多次值,所以函數的暫停與繼續的轉態由yield幫我們保存的。

例:range的編寫 #range(1,10,2)
def bar(x,y,z):
    while x <= y:
        yield x              
        x+=z
g=bar(1,10,2)       
print(next(g))

案例:編寫tail -f error.log |grep 'abc'
import time 
def foo(file):
    with open(file,'rb') as f:
        f.seek(0,2)  #光標直接到末尾
        while Ture:
            line=f.readline()  #.readline()每次只讀一行
            if line:
                yield line
            else:
                time.sleep(0.03)    

def grep(line,pater):
for i in line:
    i=i.decode('utf-8')
    if pater in i:
        yield i

g=grep(foo('error.log'),'abc')
for i in g:
    print(i)

yiled表達式形式的用法:
def foo():
    print('%s is pig' %name)
    while Ture:
        bar=yield    #bar=yield='1111'
        print('%s is pig %s' %(name,bar))

g=foo('abc')
netx(g)  #初始化,也可以使用g.send(None)
然后g.send(),從代碼執行到暫停的位置再將值傳給yield ,與next一樣。
g.send('1111')
g.send('2222')

面向過程編程:  過程指的是解決問題的步驟,即先設計框架,基于該思路編寫程序,是一種機械式方式。
優點:復雜問題流程化,進而簡單化。
缺點:可擴展性差

案例:編寫grep -rl 'python' /etc
import os  
def init(funce):
    def titi(*args,**kawrgs):
        g=funce(*args,**kawrgs)
        next(g)
        return g
    return titi
@init #foo=titi

def foo(targrt):
    while Ture:
        path_a=yield
        g=os.wal(path_a)  #絕對路徑模塊
        for a,b,c in g:
            for c1 in c:
                abc_path=r'%s/%s ' %s(a,c)
                targrt.send(abc_path)
@init   
def opener(targrt):
    while Ture:
        abc_path=yield
        with open(abc_path,'rb') as f:
            targrt.send(abc_path,f)

@init 
def cat(targrt):
    while Ture:
        abc_path,f=yield
        for line in f:
            res=targrt.send((abc_path,line))
            if res:
                  break

@init
def grep(targrt,pate):
    pate=pate.encode('utf-8')
    res=False
    while Ture:
        abc_path,line=yield res
        res=False 
        if pate  in line:
            res=Ture
            targrt.send(abc_path)   

@init
def printer():
    while Ture:
        abc_path=yield
        print('%s' %abc_path)

g=foo(opener(cat(grep(printer(),'python'))))
g.send(r'/home')

文章標題:生成器和面向編程
轉載源于:http://www.xueling.net.cn/article/giighc.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 99久久www| 国产白丝jk捆绑束缚调教视频 | 波多野结衣一区二区三区AV高清 | 亚洲AV永久中文无码精品 | 毛片免费全部播放无码私人 | 久久亚洲欧洲 | 高清人妻喷潮AV综合网 | 成人你懂的 | 高清国语自产拍免费视频 | 亚洲三区在线播放 | 欧美精品cum4k高潮 | 亚洲路线1路线2路线3地址 | 懂色一区二区二区av免费观看 | av色在线观看 | 色花堂国产精品第一页 | 午夜视频体内射.COM.COM | www.欧美黄| 91精品免费?看 | 国产成人久久精品 | 中文字幕乱码一区二区 | 91在线视频免费 | 国产精品美女在线福到 | 亚洲精品无码久久久久AV老牛 | 狠狠躁夜夜躁青青草原软件 | 成在人线AV无码免费高潮喷水 | 亚洲精品中文字幕无码A片老 | 亚洲国产精品久久久久爰色欲 | 国产69久久精品成人看动漫 | 91精品视频免费看 | 久久综合中文 | a级毛片免费高清视频 | 少妇大叫太大太爽受不了在线观看 | 久久精品人妻无码一区二区三区 | 韩国精品网站 | 波多野吉衣视频在线观看 | 精品韩国三级在线观看视频 | 精品国产一区二区三区四 | 国产精品丝袜久久久久久消防器材 | yellow免费观看网站 | 日本在线观看无码不卡V | 欧美精品久久96人妻无码 |