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

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

Susan Sarandon
Susan Sarandon원래의
2024-12-04 17:56:11165검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.