클로저 (Closure)
글 작성자: nouu
클로저 정의 및 예시
함수가 선언될 당시의 환경을 기억(포섭, Closure) 했다가, 차후 호출될 때 기억한 환경을 이용하는 함수
즉, 함수 내 함수라고 생각하면 된다.
장고에서는 주로 뷰와 장식자에서 사용된다.
def make_func(base_num) : # make_func 함수가 호출이 되어 수행이 될 때 새로운 변수 i가 생성 i = 0 def new_func1(number) : # new_func1는 클로저 # new_func1 정의 시점의 변수 x에 접근할 수 있습니다. return base_number + number ** 2 # new_fn1 = lambda number : base_number + number ** 2 # return new_func1 return new_func1 # 함수 호출 및 변수 할당 return_func = make_double(10) # 변수 내 인자를 사용하여 함수 호출 가능 print(return_func(10)) # 다음과 같이 반환된 함수가 실행되며 반환값은 110이 됩니다.
1. make_func 함수 선언 내 new_func1 함수를 선언 및 정의합니다.
2. return_func 변수에 make_double(10)을 호출합니다. 이러면 return_func는 new_func1 함수를 호출할 수 있습니다.
3. return_func 변수를 이용하여 클로저 함수인 new_func1 호출할 수 있습니다.
'개발언어 > Python' 카테고리의 다른 글
타입힌팅 (0) | 2023.11.05 |
---|---|
일급 ( first-class ) 함수 / 클래스 (0) | 2023.11.05 |
python 아스키 코드 관련 함수 ord(), chr() 함수 (0) | 2022.02.22 |
python 이스케이프 시퀀스와 로우 스트링 (0) | 2022.02.22 |
python 주요 수치 연산 함수(abs(x), divmod(x, y), pow(x, y), math) (0) | 2022.02.20 |
댓글
이 글 공유하기
다른 글
-
타입힌팅
타입힌팅
2023.11.05타입힌팅 힌트이기에 타입에 맞지 않게 값을 지정하더라도 실행 오류가 발생하지는 않습니다. 함수의 매개변수, 반환값, 변수에 대한 타입 정보를 명시적으로 선언할 수 있는 구문을 제공합니다. 개발툴이 타입을 추론할 수는 있지만 추론이 오래 걸리거나 엉뚱한 타입을 추론할 가능성이 있습니다. 단지 힌트이기에 잘못된 타입의 값을 지정한다고 해서 파이썬이 오류를 발생시키지는 않는다. 예시 def add(number1: int, number2: int) -> int: return number1 + number2 x: int = add(1, 2) -
일급 ( first-class ) 함수 / 클래스
일급 ( first-class ) 함수 / 클래스
2023.11.05 -
python 아스키 코드 관련 함수 ord(), chr() 함수
python 아스키 코드 관련 함수 ord(), chr() 함수
2022.02.22 -
python 이스케이프 시퀀스와 로우 스트링
python 이스케이프 시퀀스와 로우 스트링
2022.02.22이스케이프 시퀀스(\) 이스케이프 시퀀스는 다양한 파이썬 내의 고유 문자들의 특성을 사용하지 않고 있는 그대로 사용하기 위해, 그리고 \t, \n과 같이 특정 문자를 통해 다양한 기능을 수행하는 문자이다. print('My name is HJ.') # My name is HJ. print('My name \tis HJ.') # My name is HJ. print('I like python\`s statements.') # I like python`s statements. print('D:\\hello.py') # D:\hello.py 가 출력 # 이 외에도 \", \n(개행), \\ 등이 있다. 이스케이프 문자 이름 \t 탭 \b 백스페이스 \' ' \\ \ \" " \r 캐리지 넘버(커서를 앞으로 이…
댓글을 사용할 수 없습니다.