C/C에서 함수는 정적 변수를 선언하여 함수 호출 전반에 걸쳐 상태를 유지할 수 있습니다. 반면 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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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 중국어 웹사이트의 기타 관련 기사를 참조하세요!