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

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

DDD
DDD원래의
2024-12-16 19:03:16276검색

How Can I Simulate Static Variables in Python Functions?

Python 함수의 정적 변수: C/C 모방

C/C에서 함수는 정적 변수를 선언하여 함수 호출 전반에 걸쳐 상태를 유지할 수 있습니다. 반면 Python은 기본적으로 함수 내에서 정적 변수를 지원하지 않습니다.

Python 함수에서 정적 변수 구현

Python 함수 내에서 정적 변수의 동작을 복제하려면 다음을 사용하세요. 접근 방식:

<사전>
def foo():

if not hasattr(foo, "counter"):
    foo.counter = 0
foo.counter += 1
print("Counter is", foo.counter)

여기서 함수 내부에 "counter" 속성이 있는지 확인합니다. 존재하지 않으면 0으로 초기화합니다. 이 초기화 코드는 첫 번째 함수 호출 시작 시 실행됩니다.

데코레이터 접근 방식

가독성을 높이고 초기화 코드를 다음으로 이동합니다. 상단에는 데코레이터를 사용할 수 있습니다:

<br>def static_vars(**kwargs):</p>
<pre class="brush:php;toolbar:false">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", foo.counter)

클래스 범위가 정적 변수에 영향을 미치나요?

클래스 내부의 함수는 정적 변수의 구현을 변경하지 않습니다. 정적 변수는 여전히 클래스별이 아닌 함수별입니다.

위 내용은 Python 함수에서 정적 변수를 어떻게 시뮬레이션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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