반응형
이터레이터(iterator): 반복 가능한 객체
이터레이션: 반복 가능한 객체에서 해당 값을 가져오는 행위
iter 함수 : list나 dict를 이터레이터로 만들어주는 함수


제너레이터: 이터레이터를 만들어 주는 것
왜 제너레이터를 사용하는 가? 메모리 효율적 사용을 위해

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.

>>> import sys
>>> 
>>> a=[i for i in range(100)if i %2]
>>> b=(i for i in range(100)if i %2)
>>> 
>>> type(a)
<class 'list'>
>>> type(b)
<class 'generator'>

>>> sys.getsizeof(a)
528
>>> sys.getsizeof(b)
88

>>> aa=[i for i in range(1000)if i %2]
>>> bb=(i for i in range(1000)if i %2)
>>> sys.getsizeof(aa)
4272
>>> sys.getsizeof(bb)
88
>>> sys.getsizeof([i for i in range(100)if i %2])
528
>>> sys.getsizeof((i for i in range(100)if i %2))
88
>>> sys.getsizeof([i for i in range(1000)if i %2])
4272
>>> sys.getsizeof((i for i in range(1000)if i %2))
88
>>> class Star:
def __init__(self):
self.name="없음"
self.age=0
print("생성자")
def __del__(self):
print("소멸자")
def Disp(self):
print(__name__)

>>> def sub():
s1=Star()

>>> sub()
생성자
소멸자
>>> 
>>> 
>>> class Star:
def __init__(self,name,age):
self.name=name
self.age=age
print("생성자")
def __del__(self):
print("소멸자")
def Disp(self):
print(__name__)
print("name=",self.name,"age=",self.age)

>>> def sub():
s1=Star("송혜교",35)
s1.Disp()

>>> sub()
생성자
__main__
name= 송혜교 age= 35
소멸자
>>> 
반응형

+ Recent posts