사용법 요약 및 자세한 설명에서 Python 산출량 및 산출량

coldplay.xixi
풀어 주다: 2020-08-19 17:08:30
앞으로
3364명이 탐색했습니다.
【 다음은 밑줄 두 개로 시작됩니다.]

사용법 요약 및 자세한 설명에서 Python 산출량 및 산출량함수를 생성기로 전환합니다. Yield가 있는 함수는 더 이상 일반적인 함수가 아닙니다. 즉, Yield를 사용하는 함수는 생성기입니다. 생성기를 생성하는 것은 함수 호출처럼 보이지만 next()가 호출될 때까지 함수 코드가 실행되지 않습니다. for 루프 next())가 실행을 시작합니다. 실행 흐름은 여전히 함수의 흐름에 따라 실행되지만, Yield 문이 실행될 때마다 중단되고 반복 값이 반환됩니다. 다음 실행은 다음 Yield 문에서 계속됩니다. 정상적인 실행 중에 함수가 Yield에 의해 여러 번 중단되고 각 중단이 Yield를 통해 현재 반복 값을 반환하는 것처럼 보입니다.

yield의 이점은 명백합니다. 함수를 생성기로 다시 작성하면 다음 next() 값을 계산하기 위해 클래스의 인스턴스를 사용하는 것과 비교할 때 코드가 간결할 뿐만 아니라 그러나 실행 과정은 매우 명확합니다.

print를 사용하여 피보나치 수열 인쇄 - 기본 버전
#!/usr/bin/env python # -*- coding: utf-8 -*-def fab(max): n , a, b = 0, 0 , 1 while n < max: print(b) a, b = b, a + b n = n + 1if __name__ == '__main__': fab(6) # 1 1 2 3 5 8
로그인 후 복사

yield를 사용하여 피보나치 수열 인쇄 - 업그레이드 버전

#!/usr/bin/env python # -*- coding: utf-8 -*-def fab(max): n , a, b = 0, 0 , 1 while n < max: yield b a, b = b, a + b n = n + 1if __name__ == '__main__': for n in fab(6): # 1 1 2 3 5 8 print(n)
로그인 후 복사
__next__()

함수가 특수 생성기인지 판단하는 방법 Function r
#!/usr/bin/env python # -*- coding: utf-8 -*-from inspect import isgeneratorfunction def fab(max): n , a, b = 0, 0 , 1 while n < max: yield b a, b = b, a + b n = n + 1if __name__ == '__main__': f1 = fab(3) # True fab是一个generator function print(isgeneratorfunction(fab)) # False fab(3)不是一个generator function # 而fab(3)是调用fab返回的一个generator print(isgeneratorfunction(fab(3)))
로그인 후 복사

Yield를 사용하여

#!/usr/bin/env python # -*- coding: utf-8 -*-def read_file(fpath): BLOCK_SIZE = 100 with open(fpath, "rb") as f: while True: block = f.read(BLOCK_SIZE) if block: yield block else: returnif __name__ == '__main__': fpath = "/home/exercise-python3.7.1/vote/mysite/mysite/polls/test.txt" read_gen = read_file(fpath) print(read_gen.__next__()) print(read_gen.__next__()) print(read_gen.__next__()) print(read_gen.__next__()) # for循环会自动调用generatr的__next__()方法,故输出效果同如上的4个print 【内容较短,4个print就将test.txt中的内容输出完了】 for data in read_gen: print(data)
로그인 후 복사

yield 및 Yield를 읽을 수 있는 대용량 파일을 구현합니다. 결론:위의 두 가지 방법을 비교하면 Yield 이후에 반복 가능한 객체를 추가하면 반복 가능한 객체의 각 요소를 하나씩 생성할 수 있음을 알 수 있습니다. Yield와 비교하면 코드가 더 간결해지고 구조가 더 명확해집니다.

관련 학습 권장사항:python 비디오 튜토리얼

위 내용은 사용법 요약 및 자세한 설명에서 Python 산출량 및 산출량의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!