이 글에서는 Python의 제너레이터와 데코레이터가 무엇인지 설명하겠습니다.
생성기는 PEP 255에 도입된 이후 Python의 중요한 부분이었습니다.
Python의 생성기는 루프의 반복 동작을 제어하는 데 사용할 수 있는 특수 루틴입니다. 생성기는 배열을 반환하는 함수와 같습니다. 생성기에는 일련의 숫자를 호출하고 생성할 수 있는 매개변수가 있습니다. 그러나 전체 배열을 반환하는 함수와 달리 생성기는 한 번에 하나씩 값을 생성하므로 메모리가 덜 필요합니다.
"yield" 키워드가 포함된 모든 Python 함수를 생성기라고 부를 수 있습니다. 일반적인 파이썬 함수는 첫 번째 줄부터 실행을 시작하고 return 문이나 예외를 수신하거나 함수가 끝날 때까지 계속됩니다. 그러나 함수 범위 중에 생성된 모든 지역 변수는 소멸되어 더 이상 액세스할 수 없습니다. 생성기의 경우 Yield 키워드를 만나면 함수의 상태가 고정되고 생성기가 다시 호출될 때까지 모든 변수가 메모리에 저장됩니다.
반복자를 기반으로 생성기를 사용하거나 "next" 키워드를 사용하여 명시적으로 호출할 수 있습니다.
보통 Python의 생성기 -
def 키워드 정의 사용
수익률 키워드 사용
여러 수익 키워드가 포함될 수 있습니다.
반복자를 반환합니다.
Generators는 Iterablegenerator 객체를 반환하는 함수입니다. 전체 목록을 한 번에 가져오는 것이 아니라 생성기 개체의 값을 한 번에 하나씩 가져오기 때문에 for 루프나 next() 또는 list() 함수를 사용하여 실제 값을 가져올 수 있습니다.
제너레이터는 제너레이터 함수와 제너레이터 표현식을 사용하여 생성할 수 있습니다.
제너레이터 함수는 일반 함수와 유사하지만 값을 반환하는 대신 Yield 키워드가 있습니다.
생성기 함수를 만들려면 yield 키워드를 추가하세요. 다음 예에서는 생성기 함수를 작성하는 방법을 보여줍니다.
반복자가 있는 생성기
생성기의 출력 값 읽기
list(), for-loop 및 next() 메서드를 사용하여 생성기 개체에서 값을 읽을 수 있습니다.
next() 메서드는 목록, 배열 또는 객체의 다음 항목을 반환합니다. 목록이 비어 있고 next()가 호출되면 stopIteration 신호와 함께 오류가 반환됩니다. 이 오류는 목록에 더 이상 항목이 없음을 나타냅니다.
Python은 기존 코드에 기능을 추가하기 위한 Decorator라는 놀라운 도구를 제공합니다.
이를 메타프로그래밍이라고도 합니다. 프로그램의 한 부분이 컴파일 타임에 프로그램의 다른 부분을 수정하려고 하기 때문입니다.
데코레이터는 함수를 다른 함수의 매개변수로 사용한 다음 래퍼 함수 내에서 해당 함수를 호출합니다.
여기의 tutorials_decator는 또 다른 callable함수 python_designator 위에 일부 코드를 추가하고 래퍼 함수를 반환하는 callable함수입니다. p>
여기func는 장식된 함수이고, python_designator는 장식하는 데 사용되는 함수입니다
으아아아python_ decorator(func) - 이것은 다른 함수를 인수로 받아들이고 "장식"하는 데코레이터 함수입니다. 즉, 함수를 수정하고 수정된 버전을 반환합니다.
wrapper - 데코레이터 함수 내부에 wrapper라는 또 다른 내부 함수를 정의합니다. 전달된 함수 func를 래핑하여 수정하는 실제 함수입니다.
래퍼 함수는 데코레이터에 의해 반환됩니다.
tutorials_ decorator - 장식에 필요한 일반적인 기능입니다. 여기에 간단한 설명을 인쇄해 보세요.
위에 설명된 데코레이터 패턴은 Python 커뮤니티에서 널리 사용되지만 조금 복잡합니다. 함수 이름을 세 번 써야 하고, 장식은 함수 정의 아래 숨겨져 있습니다.
따라서 Python은 @ 기호를 사용하여 구문 설탕을 포함하여 데코레이터를 사용하는 새로운 방법을 추가했습니다.
Syntactic sugar는 콘텐츠를 더 쉽게 읽거나 표현할 수 있도록 프로그래밍 언어에서 사용되는 구문입니다.
다음 예제는 이전 예제와 동일한 작업을 수행합니다. -
으아아아이전 예와 동일하지만 유일한 차이점은 대신 @python_ decorator
를 사용한다는 것입니다. 으아아아이 기사에서는 Python의 생성기와 데코레이터에 대해 간략하게 살펴보았습니다. 또한 코드를 작성하는 동안 생성기와 데코레이터를 사용하는 방법도 시연했습니다.
위 내용은 Python의 생성자와 데코레이터는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!