Soft Ware/python

제너레이터 에 대해서 !! !

달려가보자 2012. 3. 10. 03:49

def reverse(data):
    for index in range(0,len(data),1):
        #return data[index];
        yield data[index];
for char in reverse('golf'):
    print(char);
   
   
#help(range);

#위 함수를 설명 하겠습니다. 위 함수에서 yield 랑 return 이랑 차이점을 말씀드리겟습니다 .
# yield 같은 경우에는 함수가 끝날때 메모리를 정리 하지 않지 습니다 .
#그래서  문자열이 출력되게 됩니다. 하지만 return 을 사용핡경우  같은 한 글자만 출력 되겠죠? ㅎㅎ

def abc():
    data = "abc"
    for char in data:
        yield char;
        #return char;
it = iter(abc());

print(next(it));

print(next(it));

이 경우에는 yield 대신 return 을 사용할 경우에는

2번째 print 에서 오류가 발생 하겠죠?

그 이유는 함수를 정리 했기 때문이죠

음 C 언어 같은 경우에는 cdecl call stdcall 같은 경우에 각각 다르게 정리하죠 ㅎㅎㅎ

a = [1,2,3,4,5,6,7,8,9,10];

print(sum(a));

b = (i for i in range(11))
# 이 부분 같은 경우에는  제너레이터 를 이용하여 i 값을 가져 오고 있다 .
# c 언어로 생각하면 포인터 같은 역할을 하는것 같은 생각이 드네요 ^^;;


print(next(b));
print(next(b));

'Soft Ware > python' 카테고리의 다른 글

파이썬 class 에서의 self 이놈에 대해 정의  (0) 2012.03.12
enumerate 에 대해서 ~~~  (0) 2012.03.10
이터레이터  (0) 2012.03.10
함수 ~~  (0) 2012.03.10
간단한 문제 풀기  (0) 2012.03.05