1. return
def range_r(num):
for i in range(num):
print('r')
return i
2. yield
def range_y(num):
for i in range(num):
print('y')
yield i
rf = range_r(9)
yf = range_y(9)
>>>r
yield가 def함수 내에 위치해 있다면 파이썬은 이 함수로 generator를 만들려했다고 생각하고 취급
그래서 yf = range_y(9)는
generator(9)가 됩니다
yf를 실행시키려면 for문이 필요합니다
for item in yf:
print('item = {}'.format(item))
#y
#item = 0
#y
#item = 1
...
#y
#item = 8
이와 같은 def + yield의 사용 예시
무한히 생성되는 generator를 만들고 싶을 때 만듦
# 1부터 1씩 증가하는 counter함수
def counter():
i = 0
while True:
i += 1
yield i
이렇게 작성해 두고 counter함수를 사용하기 위해 아래의 코드를 실행합니다
#1부터 10까지 출력을 원함
c = counter()
for i in range(10):
print(next(c))
print('last next = {}'.format(next(c)))
#1
#2
#..
#9
#10
#last next = 11
위와 같이 반복되는 함수가 되고
yield함수는 다음 숫자를 기억하고 있습니다
아래의 예시를 찾\