"파이썬 클로저"의 두 판 사이의 차이

24번째 줄: 24번째 줄:
</source>
</source>
<source lang='console'>
<source lang='console'>
<function count.<locals>.add_count at 0x7f484dcc96a8>
<function count.<locals>.add_count at 0x7f4b066a66a8>
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
<cell at 0x7f484dd08e88: int object at 0xa69e40>
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
<cell at 0x7f4b066e5e88: int object at 0xa69e40>
3
3
</source>
</source>

2018년 5월 14일 (월) 22:28 판

1 개요

Python Closure
파이썬 클로져
  • 일급 객체 함수 개념을 이용하여 스코프에 묶인 변수를 바인딩 하기 위한 기술을 파이썬에 적용
def count():
    cnt = 0
    def add_count():
        nonlocal cnt
        cnt += 1
        return cnt
    return add_count

count = count()
count() # 1
count() # 2
count() # 3

print(count) # count 객체 출력
print(dir(count)) # count 객체가 가지고 있는 변수, 함수를 보여줌
print(count.__closure__[0]) # count 객체 클로저의 첫번째 속성
print(count.__closure__[0].cell_contents) # count 객체 클로저의 첫번째 속성의 콘텐츠
<function count.<locals>.add_count at 0x7f4b066a66a8>
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
<cell at 0x7f4b066e5e88: int object at 0xa69e40>
3

2 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}