파이썬의 생성기
8610 단어 generatorspythonreturnyield
생산하다
Yield는 함수가 yield 키워드를 만날 때마다 함수의 실행을 일시 중지하고 로컬을 유지함으로써 지정된 값을 던집니다. 메모리.
# Function which yields the numbers.
def normal_yield ():
yield 1
yield 2
yield 3
# iterate over the numbers
for value in normal_yield() :
print (value)
호출 함수 실행이 중지될 때마다 제어는 호출된 함수에서 yield 키워드 아래의 다음 줄로 넘어갑니다.
# Program to count numbers 1 to 10.
def number_count ():
# value initialization.
i = 0
# infinite loop.
while True:
yield i
# after function called, flow execution starts from here.
i = i + 1
# Priting the values.
for count in number_count ():
if count > 10 :
break
print (count)
반복자
목록이 생성된 후 next() 반복기 함수를 사용하여 목록을 반복할 수도 있습니다. 'for in' 루프가 실행 시간의 경우 next() 메서드보다 훨씬 편리하지만.
def square_number (nums):
for i in nums:
yield (i*i)
#variable holding the yielded number
my_nums = square_number ([1,2,3,4,5])
#iterating using the next() functions
print (next(my_nums))
print (next(my_nums))
print (next(my_nums))
print (next(my_nums))
print (next(my_nums))
발전기
생성기는 우리가 정의하는 일반 파이썬 함수와 비슷하지만 함수가 정의에 'yield' 키워드를 포함하면 함수는 생성기 함수가 됩니다. yield는 제너레이터 기능을 하는 키워드입니다.
def compute ():
i=0
while True:
yield i
i = i + 1
for check in compute ():
if check % 2 == 0:
print(str(check) + " is Even")
elif check > 10:
break
수익률 대 수익률
1. 반환
함수가 실행될 때마다 return 문은 프로세스가 완료될 때까지 기다려야 하며 함수 실행이 끝난 후 호출하는 함수에 전체 변수 또는 목록을 반환합니다. 이것은 전체 목록의 메모리를 차지할 뿐만 아니라 실행에 약간의 시간이 걸립니다. 다음에 동일한 기능을 실행하려면 처음부터 실행됩니다.
def square_numbers (nums):
result = []
for i in nums:
result.append (i*i)
#return has to wait to process the above statements.
return result
my_number = square_numbers ([1,2,3,4,5])
print (my_number)
2. 수율
함수가 yield 키워드를 만나면 실행을 일시 중지하고 로컬 메모리를 그대로 유지하면서 값을 호출 함수로 보냅니다. 호출 함수가 작업을 실행한 후 프로세스는 함수 정의에서 yield의 다음 줄로 돌아갑니다. 이를 통해 실행 속도가 유지되고 메모리 공간도 거의 차지하지 않습니다.
def number_square (nums):
for i in nums:
yield (i*i)
numbers = number_square ([1,2,3,4,5])
for value in numbers:
print (value)
발전기의 장점:
전체를 반환하는 대신 한 번에 하나의 값만 던집니다.
반환과 같은 목록.
제너레이터는 그렇지 않은 반면 실행에 더 많은 시간이 걸립니다.
yield는 그 아래의 명령문만 실행하고 로컬을 유지합니다.
변수에 대한 메모리.
발전기의 단점:
일반적으로 사용되며 덜 유명합니다.
Reference
이 문제에 관하여(파이썬의 생성기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/edualgo/generators-in-python-3dml텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)