>백엔드 개발 >파이썬 튜토리얼 >Python의 생성기 수율

Python의 생성기 수율

黄舟
黄舟원래의
2017-01-19 17:21:091458검색

생성기 Yield: Yield 문
을 사용하면 함수가 단순한 값 대신 결과 시퀀스를 생성할 수 있습니다.

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

출력 결과:

Start!
5
4

__next__() 메서드 다음 Yield 문까지 생성기 함수가 실행되도록 합니다. 이때 __next__() 메서드는 반환 값을 항복에 전달하고 함수는 일시적으로 실행을 일시 중지합니다.
__next__()가 다시 호출되면 함수가 계속 실행됩니다. 생성될 때까지 프로세스가 계속됨 생성기 함수가 끝까지 반환됨
일반적으로 __next__() 메서드는 수동으로 호출되지 않지만
루프

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

를 사용하여 결과를 출력합니다.

5
4
3
2
1

처리 기반 생성기 파이프, 스트림 또는 데이터 흐름을 사용하여 프로그램을 작성하는 강력한 방법입니다.
예:

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);

출력 결과:
'tom',120,132
요약:
제너레이터의 역할 : 프로그램이 Yield로 실행되면 실행값
이 넘겨져 프로그램이 출력되지 않습니다. 이때는 프로그램이 정지된 상태라고 볼 수 있습니다. __next__() 메서드를 사용하면 함수는 다시 만날 때까지
을 계속 실행합니다.

장점: Yield는 단일 값을 저장하지 않고 현재 프로그램 실행 상태를 저장합니다. 모든 요소를 ​​한 번에 계산할 필요는 없지만 메모리 공간을 절약하기 위해 한 번에 계산합니다

위 내용은 Python에서 생성기의 Yield 내용입니다. PHP 중국어 웹사이트(www.php.php.php)를 참고하세요. cn) 더 많은 관련 콘텐츠를 확인해보세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.