클로저 

  • 외부함수 안에 내부함수를 정의한다.
  • 내부함수를 리턴한다.
  • 내부함수는 외부함수의 변수를 사용할 수 있다.
  • 외부함수는 내부함수의 변수를 사용할 수 없다.
  • 내부함수는 외부함수에서 참조하는 변수를 자신의 객체에 저장한다.
  • 외부함수의 참조된 변수는 삭제된다.

 

__call__  : 클래스로 만든 객체에 인수를 전달하여 바로 호출하는 메서드이다.

class MyList:
    def __init__(self, time):
        self.time = time

    def __call__(self, x):
        return str(self.time + x) + "시간이야 집에 보내줘💨"


clock = MyList(3)

print(clock(5))  #객체 : clock

 

 

외부 함수의 인자를 넘겨 받아 내부 함수에 저장하는 time_for 함수를 클로저라고 한다.

def time_for(time):
    def leave(home):
        return str(time + home) + "시간이야 집에 보내줘💨"
    return leave


clock = time_for(3)

print(clock(2))

 

 위와 아래 코드의 차이는 함수가 실행된 후 Class는 객체이므로 값을 가지고 있고, 클로저는 함수이므로 값을 가지고 있지 않는다.

'Python' 카테고리의 다른 글

[Python] return과 print  (1) 2023.03.24
[Python] 데코레이터(Decorator)  (0) 2023.03.23
[Python] 클래스 if __name__ =="__main__":  (0) 2023.03.23
[Python] 클래스 self  (0) 2023.03.23
[Python] 클래스 생성자(init 함수)  (0) 2023.03.23

+ Recent posts