Python은 함수 기본값을 사용하여 함수 정적 변수를 구현합니다. 정적 메서드인 경우 @staticmethod 주석을 사용할 수 있습니다.
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, 'refusenik user' 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,['x']) print f(5)
출력 결과는 다음과 같습니다.
[1] [1, 2] [1, 2, 3] ['x', 4] [1, 2, 3, 5]
이전 프로그램은 이해하기 쉽습니다. , 왜 마지막 "print f(5)"의 출력이 "[1, 2, 3, 5]"입니까?
"print f(4,['x'])" 시 기본 변수가 변경되지 않았기 때문입니다. 기본 변수의 초기화는 한 번(기본값을 사용한 첫 번째 호출)만 수행되기 때문입니다. 초기화 실행으로 열린 메모리 영역(기본 변수라고 할 수 있음)은 변경되지 않았으므로 최종 출력 결과는 "[1, 2, 3, 5]"입니다.
위 내용은 Python에서 클래스의 정적 변수를 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!