프로그래밍 언어/Python

함수 내부의 정적 변수에 해당하는 Python

Rateye 2021. 12. 5. 12:25
728x90
반응형
질문 : 함수 내부의 정적 변수에 해당하는 Python은 무엇입니까?

이 C / C ++ 코드와 동등한 관용적 Python은 무엇입니까?

void foo()
{
    static int counter = 0;
    counter++;
    printf("counter is %d\n", counter);
}

특히, 클래스 수준이 아닌 함수 수준에서 정적 멤버를 어떻게 구현합니까? 함수를 클래스에 배치하면 어떤 변화가 있습니까?

답변

약간 반전되었지만 작동합니다.

def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter
foo.counter = 0

카운터 초기화 코드를 하단 대신 상단에 배치하려면 데코레이터를 만들 수 있습니다.

def static_vars(**kwargs):
    def decorate(func):
        for k in kwargs:
            setattr(func, k, kwargs[k])
        return func
    return decorate

그런 다음 다음과 같은 코드를 사용하십시오.

@static_vars(counter=0)
def foo():
    foo.counter += 1
    print "Counter is %d" % foo.counter

foo. 를 사용해야합니다. 불행히도 접두사.

(크레딧 : @ony )

출처 : https://stackoverflow.com/questions/279561/what-is-the-python-equivalent-of-static-variables-inside-a-function
728x90
반응형