>  기사  >  백엔드 개발  >  사용법 요약 및 자세한 설명에서 Python 산출량 및 산출량

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

coldplay.xixi
coldplay.xixi앞으로
2020-08-19 17:08:303401검색
【 다음은 밑줄 두 개로 시작됩니다.]

사용법 요약 및 자세한 설명에서 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__ == &#39;__main__&#39;:
    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__ == &#39;__main__&#39;:
    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__ == &#39;__main__&#39;:
    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__ == &#39;__main__&#39;:
    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으로 문의하시기 바랍니다. 삭제