Maison >développement back-end >Tutoriel Python >Rendement du générateur en python

Rendement du générateur en python

黄舟
黄舟original
2017-01-19 17:21:091458parcourir

Rendement du générateur : l'utilisation de l'instruction de rendement
permet à la fonction de générer une séquence de résultats au lieu d'une simple valeur

def  countdow(n):  
     print("Start!");  
     while n>0:  
          yield n;  
          n -= 1;  
c = countdow(5);  
print(c.__next__())   
print(c.__next__())

Résultat de sortie :

Start!
5
4

La méthode __next__() entraîne l'exécution de la fonction génératrice jusqu'à la prochaine instruction rendement. À ce moment, la méthode __next__() transmet la valeur de retour à rendement et la fonction suspend temporairement l'exécution
La fonction continue de s'exécuter lorsque. appeler à nouveau __next__(). Le processus continue jusqu'à ce que la fonction génératrice revienne à la fin
Habituellement, la méthode __next__() n'est pas appelée manuellement
mais une boucle est utilisée

for i in  countdow(5):  
 print(i);

Résultat de sortie :

5
4
3
2
1

Le générateur est un moyen puissant d'écrire des programmes basés sur des pipelines de traitement, des flux ou des flux de données
Par exemple :

def tail(f):    
 for line in f:    
  if not line : #如果 非真 则暂时休眠并且再次尝试  
   time.sleep(0.1);  
   continue;  
  yield line; # 将获取到的文件中的值 生成一个序列的值  
filecount = tail(open('E:/work.txt'));  
  
#grep方法 用于在上面方法生成器中查找特定的子字符串    
def grep(lines,searchtext):  
 for line in lines:  
  if searchtext in line :  
   yield  line;  
lines  = grep(filecount,'tom');  #查找带有tom 的子字符串  
for line in lines:   
 print(line);

Résultat de sortie : 'tom',120,132
Résumé :
Le rôle du générateur : lorsque le programme s'exécute pour rendement, la valeur en cours
est transmise à rendement. Le programme ne produit pas, ce qui peut être considéré comme le. le programme est actuellement dans un état suspendu. Lors de l'utilisation de la méthode __next__() Lorsque la fonction continue de s'exécuter
jusqu'à ce qu'elle rencontre à nouveau rendement

Avantages : rendement ne stocke pas une seule valeur, mais enregistre la valeur. état d'exécution actuel du programme au lieu de calculer tous les éléments en même temps mais de les calculer une fois pour économiser de l'espace mémoire

Ce qui précède est le contenu du rendement du générateur en python. Pour plus de contenu connexe, veuillez faire attention au site Web chinois PHP. (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn