python中print,return和yield的區別


def func1():
    for i in range(1, 5):
        print i

def func2():
    for i in range(1, 5):
        return i

def func3():
    for i in range(1, 5):
        yield i

func1() 
print func2()
print func3()    

 

1.print並不會阻斷程序的執行,就不用多說了。

2.func2()方法中的循環執行第一次就被return結束掉了。(后面的2、3、4就不會有返回的機會了)

3.yield你可以通俗的叫它"輪轉容器",可用現實的一種實物來理解:水車,先yield來裝入數據、產出generator object、使用next()來釋放;好比水車轉動后,車輪上的水槽裝入水,隨着輪子轉動,被轉到下面的水槽就能將水送入水道中流入田里。

def func3():
    for i in range(1,5):
        yield i#裝入
 
gob = func3()#generator 類型
print next(gob)#1    釋放的第一個裝入的數據,(先入先出)
print next(gob)#2
print next(gob)#3
print next(gob)#4
 
print next(gob)#報錯

個人理解,yield在python內部是當作list處理的:

def func3():
    for i in range(1,5):
        yield i
        
yi = []
yi = func3()
for y in yi:
    print y
     
1
2
3
4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM