>  기사  >  백엔드 개발  >  Python에서 클래스의 정적 변수를 이해하는 방법

Python에서 클래스의 정적 변수를 이해하는 방법

anonymity
anonymity원래의
2019-05-27 13:43:336085검색

Python은 함수 기본값을 사용하여 함수 정적 변수를 구현합니다. 정적 메서드인 경우 @staticmethod 주석을 사용할 수 있습니다.

Python에서 클래스의 정적 변수를 이해하는 방법1. Python 함수 기본값
Python 함수 기본값을 사용하면 함수를 호출할 때 코드를 작성할 때 편리할 수 있습니다. . 따라서 Python에서는 특히 클래스에서 함수 기본값을 많이 사용합니다. 일반적으로 클래스의 초기화 함수에서는 기본값을 사용합니다. 클래스를 사용하면 여러 매개변수를 전달하지 않고도 쉽게 클래스를 만들 수 있습니다.
함수 매개변수 이름 뒤에 "=defalut_value"만 추가하면 함수 기본값이 정의됩니다. 한 가지 주의할 점은 기본값이 있는 매개변수는 함수 매개변수 목록의 마지막에 있어야 한다는 점입니다. 기본값이 없는 매개변수는 기본값이 있는 매개변수 뒤에 올 수 없습니다. 그렇게 정의하면 인터프리터는 매개변수를 전달하는 방법을 알지 못합니다.
먼저 샘플 코드를 살펴보겠습니다.

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while True:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return True
if ok in ('n', 'no', 'nop', 'nope'): return False
retries = retries - 1
if retries < 0: raise IOError, &#39;refusenik user&#39;
print complaint

위 함수를 호출할 때 재시도 횟수와 출력 프롬프트 언어를 수정할 수 있습니다. 너무 게으른데, 바꿀 필요 없어?
2. Python은 함수의 기본값을 사용하여 정적 변수의 기능을 구현합니다.
Python에서는 정적 변수를 지원하지 않지만 함수의 기본값을 통해 정적 변수의 기능을 구현할 수 있습니다.
함수의 기본값이 가변 내용을 갖는 클래스인 경우 클래스 내용은 가변이지만 클래스 이름은 변경되지 않습니다. (이것은 열린 메모리 영역이 변경되지 않는 것과 동일하지만 내용은 변경될 수 있습니다.)
파이썬에서 함수의 기본값은 한 번만 실행되기 때문입니다. (정적 변수와 마찬가지로 정적 변수 초기화도 한 번 실행됩니다.) 이것이 공통점입니다.
다음 프로그램 조각을 살펴보겠습니다.

def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
print f(4,[&#39;x&#39;])
print f(5)

출력 결과는 다음과 같습니다.

[1]
[1, 2]
[1, 2, 3]
[&#39;x&#39;, 4]
[1, 2, 3, 5]

이전 프로그램은 이해하기 쉽습니다. , 왜 마지막 "print f(5)"의 출력이 "[1, 2, 3, 5]"입니까?
"print f(4,['x'])" 시 기본 변수가 변경되지 않았기 때문입니다. 기본 변수의 초기화는 한 번(기본값을 사용한 첫 번째 호출)만 수행되기 때문입니다. 초기화 실행으로 열린 메모리 영역(기본 변수라고 할 수 있음)은 변경되지 않았으므로 최종 출력 결과는 "[1, 2, 3, 5]"입니다.

위 내용은 Python에서 클래스의 정적 변수를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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