Python 생성기 및 사용 방법
의제 :
Python의 Generator는 무엇입니까?
생성기는 기본적으로 순회 가능한 객체 또는 항목을 반환하는 기능입니다. Generator는 한 번에 출력을 생성하지 않지만 Generator는 필요할 때 출력을 생성합니다. Generator에는 많은 장점이 있으며 그 중 일부는 여기서 논의할 것입니다. :)
제너레이터 사용의 장점
일반 기능 VS 생성기 기능:
Normal과 Generator 함수의 차이점은 키워드 return to yield 뿐입니다. 일반 함수에서는 출력을 반환하지만 Generator 함수에서는 yield 의 객체를 반환합니다 list . next()를 사용하면 객체를 사용하여 숫자를 얻습니다. Normal 함수에서는 함수 이름으로 함수를 호출하지만 생성기 함수에서는 next()로 함수를 호출했습니다.
생성기 기능
#Genarator function
def func(a):
yield a #change keyword return to yield
a = [1,2,3]
b=func(a)
next(b)
output --->
[1 , 2 , 3 ]
다음() 사용
def myfunc(a):
while a>=3:
yield a
a=a+1
b = myfunc(a)
print(b)
next(b)
정상적인 기능
def func(a):
return a
a=[1,2,3]
func(a)
output -->
[1 ,2 , 3]
위의 코드를 보면 수익으로 돌아가는 변화를 관찰할 수 있지만 기능은 완전히 반대입니다. yield는 next()를 사용하여 출력의 객체를 반환하고 우리는 그것을 얻습니다. 그의 이름으로 호출되는 일반 함수이지만 next()에 의해 호출되는 생성기 함수입니다. 아래 이미지를 본 후에 깨닫게 될 것입니다.
루프가 있는 생성기
같은 기능을 한 번에 실행하고 싶을 때는 'for' 루프를 사용하면 됩니다. 이 루프는 객체를 반복하는 데 도움이 되며 모든 구현 후에 StopIteration을 실행합니다.
def z():
n=1
yield n
n=n+3
yield n
for x in z():
print(x)
output --->>
1
4
생성기 표현식:
루프 프로시저 반복기에 대한 루프와 함께 식을 사용할 수도 있습니다. 이것은 생성을 반복 가능하고 이해하기 쉽게 만듭니다.
print("Generator Expression " , end= " :n ")
range_list=range(6)
ret = (number for number in range_list)
print(c)
for ret_number in ret:
print(ret_number)
주요 차이점
우리가 말했듯이 Generator는 코드를 예쁘고 읽기 쉽게 만들고 메모리와 코드를 적게 사용하며 코드를 줄입니다. 이제 먼저 살펴볼 시간입니다. 제너레이터 없이 코드를 작성한 다음 제너레이터로 코드를 작성하면 파이썬에서 제너레이터의 차이점과 축복을 볼 수 있습니다.
생성기를 사용하지 않고 코드 작성
class Nums:
MAX = 4
def __init__(self):
self.current = 0
def __iter__(self):
return self
def __next__(self):
next_value = self.current
if next_value >= self.MAX:
raise StopIteration
self.current += 1
return next_value
생성기를 사용한 코드
def func(var1):
yield var1
var1 +=1
Reference
이 문제에 관하여(Python 생성기 및 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iffishells/python-generator-s-and-how-to-used-them-ig7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)