>  기사  >  백엔드 개발  >  Python의 \"send\" 함수는 생성기에서 무엇을 합니까?

Python의 \"send\" 함수는 생성기에서 무엇을 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-03 08:50:02463검색

What Does Python's

Python 생성기의 "send" 유틸리티 이해

Python 생성기의 "yield" 개념은 널리 알려져 있지만 목적은 "보내기" 기능은 여전히 ​​모호합니다. 명확히 말하면, "보내기" 기능을 사용하면 최근에 값을 생성한 생성기로 값을 전송할 수 있습니다.

다음과 같은 간단한 예를 고려하세요.

<code class="python">def double_inputs():
    while True:
        x = yield
        yield x * 2</code>

생성기 인스턴스 생성 시 (gen), next(gen) 문을 실행하면 생성기가 초기화되고 첫 번째 "yield" 발생 시 실행이 일시 중지됩니다. 이어서 gen.send(10)를 호출하면 "yield" 변수에 값 10이 주입됩니다. 그런 다음 생성기는 곱셈 연산의 결과를 나타내는 값 20을 반환합니다.

"send"를 사용하여 생성기에 값을 전달하는 이 기능은 주로 생성기에서 값을 전달하는 "yield"와 구별됩니다.

"send"의 중요한 응용 프로그램은 Twisted의 "@defer.inlineCallbacks" 데코레이터에 있습니다. 이를 통해 다음과 같은 기능을 원활하게 실행할 수 있습니다.

<code class="python">@defer.inlineCallbacks
def doStuff():
    result = yield takesTwoSeconds()
    nextResult = yield takesTenSeconds(result * 10)
    defer.returnValue(nextResult / 10)</code>

이 예에서 "takesTwoSeconds"는 처음에 "Deferred" 개체를 반환합니다. Twisted는 이 계산을 백그라운드 스레드에 할당하고 완료 시 "send"를 통해 대기 중인 doStuff 생성기에 결과를 주입합니다. 이 메커니즘은 코드 구조를 단순화하여 비동기 작업을 처리할 때 보다 선형적이고 이해하기 쉬운 흐름을 허용합니다.

위 내용은 Python의 \"send\" 함수는 생성기에서 무엇을 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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