728x90
๋ฐ์ํ
ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ๋ฅผ ํ๊ตฌํฉ์๋ค.
<์ ๋๋ ์ดํฐ(Generator)>
1. ํจ์๋ฅผ ์ด์ฉํด์ ์ดํฐ๋ ์ดํฐ(๋ฐ๋ณต)์ ๊ธฐ๋ฅ์ ๊ตฌํ
2. ์ดํฐ๋ ์ดํฐ์ ๋์ผํ๊ฒ ํธ์ถ ์์ ์๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์ด ๋๋๋ฉด ์๋ฉธ๋ฉ๋๋ค.
3. ๋ฐํํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ return์ด ์๋, yield๋ฅผ ์ฌ์ฉํฉ๋๋ค.
4. ์ดํฐ๋ ์ดํฐ์ ๋์ผํ๊ฒ ์ ์ฒด ๋๋ next() ํ๊ฑด์ฉ ์ถ๋ ฅ ๊ฐ๋ฅํฉ๋๋ค.
<์์ฑ ์ฝ๋>
<์์ > ์ ๋๋ ์ดํฐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
def simple_generator() :
### ์ฒซ๋ฒ์งธ ๋ฐํํ ๊ฐ
yield 1
### ๋๋ฒ์งธ ๋ฐํํ ๊ฐ
yield 2
### ์ธ๋ฒ์งธ ๋ฐํํ ๊ฐ
yield 3
### ์ ๋๋ ์ดํฐ ์ ์ฒด ์ถ๋ ฅํ๊ธฐ
# - ์ ๋๋ ์ดํฐ์์๋ ํจ์๋ฅผ ๊ฐ์ฒด๋ก ์ธ์งํ๊ณ ์ฌ์ฉํฉ๋๋ค.
# - ํจ์๋ฅผ ์์ฑํ๋ค๋ ์๋ฏธ ๋๋ ์ ๋๋ ์ดํฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ ์๋ฏธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
for v in simple_generator() :
print(v)
<์คํ ํ๋ฉด>
<์์ฑ ์ฝ๋>
<์์ > 1๋ถํฐ 5๊น์ง์ ์ซ์๋ฅผ ์์ฑํด์ ๋ฐํํ๋ ์ ๋๋ ์ดํฐ ๋ง๋ค๊ธฐ
### ํจ์์ด๋ฆ number_generator()
def number_generator():
for i in range(1, 6, 1):
yield i
### ์ ์ฒด ์ถ๋ ฅํ๊ธฐ
### - ํจ์ ๊ฐ์ฒด ์์ฑํ๊ธฐ
gen = number_generator()
for num in gen :
print(num)
<์คํ ํ๋ฉด>
<์์ฑ ์ฝ๋>
### - ํจ์ ๊ฐ์ฒด ์์ฑํ๊ธฐ
gen = number_generator()
### ํ๊ฑด์ฉ ์ถ๋ ฅํ๊ธฐ
try :
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
print(next(gen))
except :
pass
<์คํ ํ๋ฉด>
728x90
๋ฐ์ํ