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

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
37번째 줄: 37번째 줄:


[[분류: Python]]
[[분류: Python]]
[[분류: 클로저]]

2021년 10월 20일 (수) 13:20 기준 최신판

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(type(count.__closure__)) # 클로저 타입 확인
print(count.__closure__[0]) # count 객체 클로저의 첫번째 속성
print(count.__closure__[0].cell_contents) # count 객체 클로저의 첫번째 속성의 콘텐츠
<function count.<locals>.add_count at 0x7f24a31b56a8>
['__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__']
<class 'tuple'>
<cell at 0x7f24a31f4e88: int object at 0xa69e40>

2 같이 보기[ | ]

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