nathan_H

Closure. 본문

Programming Laguage/Python

Closure.

nathan_H 2019. 4. 26. 13:28

 

python은

내부 함수을 사용할 수 있다

 

 

즉 함수 안에 함수를 넣어

루프나 코드 중복을 피하기 위해 

또 다른 함수 내에 어떤 복잡한 작업을 

한 번 이상 수행할 때 유용하게 사용 할 수 있다.

 

def write(books):
    def reading(book):
        return f"i am reading {book}"

    return reading(books)

 

 

그리고 내부 함수는

클로저처럼 사용 될 수 있다.

 

 

클로져란 

다른 함수에 의해 동적으로 생성된다.

 

그리고 바깥 함수로부터 생성된 변수값을 변경하고,

저장할 수 잇는 함수이다.

 

def write1(books):
    '''closure'''

    def reading():
        return f"i am reading {books}"

    return reading


if __name__ == "__main__":
    a = write1("when")  # <function write1.<locals>.reading at 0x000001BEFC489AE8>
    b = write1("how")  # <function write1.<locals>.reading at 0x000001BEFC489AE8>
    print(a())  # i am reading when
    print(b())  # i am reading how

 

내부 함수에 인자를 주지 않고

바깥 함수에 변수를 받아

저장하여 사용된다.

 

그리고 write1의 내부함수 reading은 

return reading 구문으로 reading함수의

특별한 복사본을 반환한다.

 

즉 외부 함수에 의해 동적으로 생성되고,

외부 함수의 변수값을 알고 있는 함수인 클로져인 것이다.

'Programming Laguage > Python' 카테고리의 다른 글

python - class method type.  (0) 2019.04.30
python - function 과 method  (0) 2019.04.30
python - namespace  (0) 2019.04.26
Decorator  (0) 2019.04.26
python - 진수 변환, ascll code 변환  (0) 2019.04.18
Comments