python 之 看yield的傳回值

來源:互聯網
上載者:User

含有yield的函數就是產生器,不是普通的函數。產生器包含有迭代器,“雨果”不明白什麼是產生器和迭代器參見

http://blog.csdn.net/xiaofeng_yan/archive/2010/09/27/5910215.aspx

下面重點說一下,怎麼看 yield 的傳回值。

大家要記住,看yield的值必須在迴圈裡,因為只有在迴圈裡才能使yield傳回值或者具有可迭代的函數裡如列表。

比如:

def test(lst):
        try:
                for sublist in lst:
                        print "sublist"
                for element in test(sublist):
                        print 'element=', element
        except TypeError:
                print 'TypeError'
                yield lst

for i in test(1):
        print i
這裡test(1) 使得for sublist in lst 引發了一個異常。然後調用yield lst語句。它返回了什麼呢?  我們就用for i in test(1)來看它的值。

或者:

def test(lst):
        try:
                for sublist in lst:
                        print "sublist"
                for element in test(sublist):
                        print 'element=', element
        except TypeError:
                print 'TypeError'
                yield lst

print list(test(1))

執行的結果是[1],沒錯list將數字“1”轉換成了列表。因為列表是可用於迭代的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.