문제:
Python은 C/C와 유사한 함수 내에서 정적 변수를 어떻게 구현합니까? s 함수에 정의된 정적 멤버 변수 level?
답변:
Python에서는 함수 내의 정적 변수에 직접적으로 상응하는 것이 없습니다. 그러나 중첩된 함수와 클로저의 조합을 사용하면 비슷한 기능을 얻을 수 있습니다.
def foo(): def counter(): if not hasattr(foo, "counter_value"): foo.counter_value = 0 foo.counter_value += 1 return foo.counter_value return counter
여기서 foo() 함수는 중첩된 함수 counter()를 정의합니다. 외부 함수 foo()는 counter()에 대한 클로저 역할을 하며 격리된 네임스페이스를 제공합니다.
카운터에 액세스하고 증가시키려면 다음을 호출합니다.
counter = foo() counter() # Initializes the counter counter() # Increments the counter
데코레이터 접근 방식:
또 다른 접근 방식은 데코레이터를 사용하여 정적 변수:
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 return foo.counter
이 구문을 사용하면 정적 변수를 보다 편리하게 초기화하고 액세스할 수 있지만 foo를 사용해야 합니다. 접두사.
위 내용은 Python에서 정적 함수 변수를 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!