> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 정적 함수 변수를 어떻게 시뮬레이션할 수 있습니까?

Python에서 정적 함수 변수를 어떻게 시뮬레이션할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-04 17:56:11
원래의
174명이 탐색했습니다.

How Can I Simulate Static Function Variables in Python?

정적 함수 변수에 해당하는 Python

문제:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿