static
Python, 파이썬1) Python 에는 그런 거 없다. 다른 방식으로 비슷하게 구현해야 한다.
2-1)
def func(static_var = [0]):
static_var[0] +=1
return static_var[0]
# func 를 의도한대로 사용한 결과
print(func()) # 1 출력
print(func()) # 2 출력
# func 를 의도에서 벗어나 사용한 결과 문제점
print(func()) # 1 출력
print(func([10, 20, 30])) # 11 출력
print(func()) # 2 출력
2-2) 2-1 의 문제점 해결한 방식. class member variable 방식
def func()
func.counter += 1
return func.counter
func.counter = 0
처럼 하면 func 객체 ( def 라 함수지만 python 에서 모두 객체이다. counter 는 member 변수가 되고, 객체가 사라지지 않는 이상 유지된다. Ex> del func.counter)
2-3) 2-1 의 문제점 해결한 방식. nonlocal 방식. in 에서 out의 변수 참조가 존재할 수 있어서 변수 유지해줌.
def out_func():
static_var = 0
def in_func():
nonlocal static_var # static_var 는 in_func 에서만 변경할 수 있다.
static_var 十= 1
return static_var
return in_func
out_func()
'Python, 파이썬' 카테고리의 다른 글
locals, return 될 변수를 동적으로 변경하는 방법 (0) | 2024.12.05 |
---|---|
Debuggin,디버깅,pdb (0) | 2024.05.24 |
import directory 지정해주기 (0) | 2024.04.19 |
csv 를 읽어 mysql create table 문장 생성 (0) | 2024.03.16 |
..., :, Ellipsis (0) | 2023.09.21 |