python生成器(generator)學(xué)習(xí)

通過(guò)對(duì)廖雪峰的python教程學(xué)習(xí)生成器啃勉,如下代碼:

def odd():
    print('step 1')
    yield 1
    print('step 2')
    yield (3)
    print('step 3')
    yield (5)

if __name__ == "__main__":
    o = odd()
    for index in o:
        print(index)

輸出內(nèi)容如下:

step 1
1
step 2
3
step 3
5

generator函數(shù)罕拂,在每次調(diào)用next()的時(shí)候執(zhí)行仰剿,遇到y(tǒng)ield語(yǔ)句返回卧须,再次執(zhí)行時(shí)從上次返回的yield語(yǔ)句處繼續(xù)執(zhí)行另绩。for循環(huán)就是調(diào)用next()函數(shù),理解了這點(diǎn)就可以理解上述代碼了花嘶。再scrapy框架爬蟲(chóng)中經(jīng)常會(huì)遇到y(tǒng)ield函數(shù)笋籽,

 def start_requests(self):
        self.log('------' + __name__ + ' start requests ------')
        if self.task_running is False:
            return
        apps = appinfo_mq.query_star_ids(self.market, self.country, self.start_id,
                                         self.start_index, self.keyword_count - self.start_index)
        header = CommentsSpider.headers
        # apps = ['548984223']  #文件管理器
        if apps is not None:
            log_file = open(self.log_path, 'a')
            for app in apps:
                app = app.replace('id', '')
                log_file.write(str(app) + '---')
                self.page_index[str(app)] = 1
                self.is_first[str(app)] = True
                new_url = CommentsSpider.url.format(app, 1)
                yield Request(new_url, headers=header, meta={'app_id': app})
            log_file.close()
        else:
            yield None

調(diào)用如下:

 for req in self.start_requests():
                if req is not None:
                    self.crawler.engine.crawl(req, spider=self)
                    self.no_keyword = False
                else:
                    self.task_running = False
                    self.no_keyword = True
                    timer.check_keyword_recover(self.request_action)
                    break
我們的start_requests()函數(shù)生成一個(gè)generator,通過(guò)循環(huán)逐一拿到Request()請(qǐng)求椭员,
通過(guò)我們的引擎self.crawler.engine對(duì)每一個(gè)網(wǎng)絡(luò)請(qǐng)求進(jìn)行爬取车海,
Request()是scrapy內(nèi)部封裝的網(wǎng)絡(luò)請(qǐng)求。我們?cè)谂老x(chóng)中將所有的請(qǐng)求放入generator隘击,
后面通過(guò)generator來(lái)靈活處理我們的請(qǐng)求侍芝。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末研铆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子竭贩,更是在濱河造成了極大的恐慌蚜印,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件留量,死亡現(xiàn)場(chǎng)離奇詭異窄赋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)楼熄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門忆绰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人可岂,你說(shuō)我怎么就攤上這事错敢。” “怎么了缕粹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵稚茅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我平斩,道長(zhǎng)亚享,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任绘面,我火速辦了婚禮欺税,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揭璃。我一直安慰自己晚凿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瘦馍。 她就那樣靜靜地躺著歼秽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扣墩。 梳的紋絲不亂的頭發(fā)上哲银,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音呻惕,去河邊找鬼荆责。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亚脆,可吹牛的內(nèi)容都是我干的做院。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼键耕!你這毒婦竟也來(lái)了寺滚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屈雄,失蹤者是張志新(化名)和其女友劉穎村视,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酒奶,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚁孔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惋嚎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠氢。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖另伍,靈堂內(nèi)的尸體忽然破棺而出鼻百,到底是詐尸還是另有隱情,我是刑警寧澤摆尝,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布温艇,位于F島的核電站,受9級(jí)特大地震影響堕汞,放射性物質(zhì)發(fā)生泄漏中贝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一臼朗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝎土,春花似錦视哑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至暴构,卻和暖如春跪呈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背取逾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工耗绿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砾隅。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓误阻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子究反,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在此處先列下本篇文章的主要內(nèi)容 簡(jiǎn)介 next方法的參數(shù) for...of循環(huán) Generator.prototy...
    醉生夢(mèng)死閱讀 1,441評(píng)論 3 8
  • 簡(jiǎn)介 基本概念 Generator函數(shù)是ES6提供的一種異步編程解決方案寻定,語(yǔ)法行為與傳統(tǒng)函數(shù)完全不同。本章詳細(xì)介紹...
    呼呼哥閱讀 1,075評(píng)論 0 4
  • 本文作者就是我精耐,簡(jiǎn)書(shū)的microkof狼速。如果您覺(jué)得本文對(duì)您的工作有意義,產(chǎn)生了不可估量的價(jià)值卦停,那么請(qǐng)您不吝打賞我向胡,...
    microkof閱讀 23,730評(píng)論 16 78
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點(diǎn)點(diǎn)福利:阿里云產(chǎn)品券沫浆,享受所有官網(wǎng)優(yōu)惠捷枯,并抽取幸運(yùn)大...
    HetfieldJoe閱讀 6,378評(píng)論 9 19
  • 素履之行閱讀 300評(píng)論 2 9