클로저
- 외부함수 안에 내부함수를 정의한다.
- 내부함수를 리턴한다.
- 내부함수는 외부함수의 변수를 사용할 수 있다.
- 외부함수는 내부함수의 변수를 사용할 수 없다.
- 내부함수는 외부함수에서 참조하는 변수를 자신의 객체에 저장한다.
- 외부함수의 참조된 변수는 삭제된다.
__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 |