>  기사  >  백엔드 개발  >  Python의 생성자와 데코레이터는 무엇입니까?

Python의 생성자와 데코레이터는 무엇입니까?

王林
王林앞으로
2023-09-10 22:49:02967검색

Python의 생성자와 데코레이터는 무엇입니까?

이 글에서는 Python의 제너레이터와 데코레이터가 무엇인지 설명하겠습니다.

생성기는 PEP 255에 도입된 이후 Python의 중요한 부분이었습니다.

Python의 생성기는 루프의 반복 동작을 제어하는 ​​데 사용할 수 있는 특수 루틴입니다. 생성기는 배열을 반환하는 함수와 같습니다. 생성기에는 일련의 숫자를 호출하고 생성할 수 있는 매개변수가 있습니다. 그러나 전체 배열을 반환하는 함수와 달리 생성기는 한 번에 하나씩 값을 생성하므로 메모리가 덜 필요합니다.

"yield" 키워드가 포함된 모든 Python 함수를 생성기라고 부를 수 있습니다. 일반적인 파이썬 함수는 첫 번째 줄부터 실행을 시작하고 return 문이나 예외를 수신하거나 함수가 끝날 때까지 계속됩니다. 그러나 함수 범위 중에 생성된 모든 지역 변수는 소멸되어 더 이상 액세스할 수 없습니다. 생성기의 경우 Yield 키워드를 만나면 함수의 상태가 고정되고 생성기가 다시 호출될 때까지 모든 변수가 메모리에 저장됩니다.

반복자를 기반으로 생성기를 사용하거나 "next" 키워드를 사용하여 명시적으로 호출할 수 있습니다.

보통 Python의 생성기 -

  • def 키워드 정의 사용

  • 수익률 키워드 사용

  • 여러 수익 키워드가 포함될 수 있습니다.

  • 반복자를 반환합니다.

GeneratorsIterablegenerator 객체를 반환하는 함수입니다. 전체 목록을 한 번에 가져오는 것이 아니라 생성기 개체의 값을 한 번에 하나씩 가져오기 때문에 for 루프나 next() 또는 list() 함수를 사용하여 실제 값을 가져올 수 있습니다.

제너레이터 기능

제너레이터는 제너레이터 함수와 제너레이터 표현식을 사용하여 생성할 수 있습니다.

제너레이터 함수는 일반 함수와 유사하지만 값을 반환하는 대신 Yield 키워드가 있습니다.

생성기 함수를 만들려면 yield 키워드를 추가하세요. 다음 예에서는 생성기 함수를 작성하는 방법을 보여줍니다.

반복자가 있는 생성기

으아아아

출력

으아아아

생성기의 출력 값 읽기

list(), for-loop 및 next() 메서드를 사용하여 생성기 개체에서 값을 읽을 수 있습니다.

next()를 사용하여 생성기 개체에서 값을 읽습니다.

next() 메서드는 목록, 배열 또는 객체의 다음 항목을 반환합니다. 목록이 비어 있고 next()가 호출되면 stopIteration 신호와 함께 오류가 반환됩니다. 이 오류는 목록에 더 이상 항목이 없음을 나타냅니다.

으아아아

출력

으아아아

Python의 데코레이터

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제