1.클로저(Closure)
-클로저(Closure)는 프로그래밍 언어에서 중요한 개념 중 하나로, 함수와 그 함수가 참조하는 외부 변수(또는 자유 변수)사이의 관계를 나타냅니다. 클로저는 함수의 내부에서 정의된 함수로, 내부 함수가 외부 함수의 변수에 접근 할 수 있고, 외부 함수는 내부함수를 반환 할수 있습니다. 이로 인해 함수와 그 함수가 참조하는 상태(변수)를 함께 저장하고 유지할 수 있습니다.
사용 예시)
1)
def mul2(n):
return n * 2
print(mul2(10))
print(mul2(5))
-->
20
10
2)
def mul5(n):
return n*5
print(mul5(10))
print(mul5(5))
-->
50
25
3)
from re import M
class mul:
def __init__(self, m):
self.m = m
def mul(self, n):
return self.m * n
mul5 = mul(5)
print(mul5.mul(10))
print(mul5.mul(5))
--->
50
25
4)
class mul:
def __init__(self, m):
self.m = m
def mul(self, n):
return self.m * n
mul5 = mul(5)
print(mul5.mul(10))
print(mul5.mul(5))
-->
50
25
5)
class mul:
def __init__(self, m):
self.m = m
def mul(self, n):
return self.m * n
mul5 = mul(6)
print(mul5.mul(10))
print(mul5.mul(5))
-->
60
30
2. 데코레이터(Decorator)
-데코레이터는 파이썬에서 함수나 메서드의 동작을 수정하거나 확장하기 위한 강력한 도구입니다.
-데코레이터는 함수나 메서드를 래핑하거나 감싸서 추가 기능을 제공하며, 코드 재사용과 가독상을 향상시킵니다.
-데코레이터는 @ 기호를 사용하여 함수나 메서드 위에 적용됩니다.
1)
import time
def func1(a,b):
start = time.time()
print('함수가 시작되었습니다.')
result = a + b
end = time.time()
print(f'함수 수행시간 : {end-start}')
return result
result = func1(10, 3)
print(result)
-->
함수가 시작되었습니다.
함수 수행시간 : 0.001735687255859375
13
2)
import time
def func2(a,b):
start = time.time()
print('함수가 시작되었습니다.')
result = a * b
end = time.time()
print(f' 함수 수행시간 : {end-start}')
return result
result = func2(10, 3)
print(result)
-->
함수가 시작되었습니다.
함수 수행시간 : 0.001706838607788086
30
3)
def func1(a, b):
result = a + b
return result
def func2(a, b):
result = a * b
return result
def elapsed(func):
def wrapper(a, b):
start = time.time()
print('함수가 시작되었습니다')
result = func(a, b)
end = time.time()
print(f'함수 수행시간: {end - start}')
return result
return wrapper
deco1 = elapsed(func1)
result = deco1(10, 3)
print(result)
-->
함수가 시작되었습니다
함수 수행시간: 0.0007021427154541016
13
4)
@elapsed
def func1(a, b):
result = a + b
return result
@elapsed
def func2(a, b):
result = a * b
return result
result = func1(10, 3)
print(result)
result = func2(10, 3)
print(result)
-->
함수가 시작되었습니다
함수 수행시간: 9.584426879882812e-05
13
함수가 시작되었습니다
함수 수행시간: 3.170967102050781e-05
30
728x90
LIST
'파이썬(python)' 카테고리의 다른 글
19. 스페셜 메서드 (0) | 2024.09.30 |
---|---|
18. 파이썬의 상속 (2) | 2024.09.30 |
16. 객체지향과 클래스 (2) | 2024.09.27 |
15. 콜백 함수 & 람다 함수 (4) | 2024.09.27 |
14. 변수의 범위 (2) | 2024.09.27 |