파이썬의 기본값 개념은 가변 또는 불변 객체 사용을 기반으로 합니다. 프로그래밍 실습에서는 변경 가능한 객체를 기본값으로 사용하지 않는 것이 가장 좋습니다. 대신 문제를 방지하려면 None을 기본값으로 사용하세요. 숫자, 문자열, 튜플 및 None과 같은 불변 객체는 변경되지 않습니다. 사전, 목록, 클래스 인스턴스와 같은 변경 가능한 객체의 경우 변경으로 인해 혼란이 발생할 수 있습니다.
함수에 포함된 사전의 예를 살펴보고 무엇이 잘못되었으며 어떻게 수정하는지 살펴보겠습니다.
기능이 있습니다. 이 함수에서는 사전을 매개변수로 갖고 기본값을 설정합니다. 이 함수가 처음 호출되면 mydict에는 항목이 하나만 포함됩니다. 두 번째 호출에서 mydict에는 두 개의 항목이 포함됩니다. foo()가 실행을 시작했을 때 mydict에 이미 하나의 항목이 있었기 때문입니다.
으아악우리는 종종 함수 호출이 기본값을 사용하여 새 개체를 생성할 것으로 기대합니다. 그러나 그렇지 않습니다. 기본값은 함수가 정의될 때 한 번만 생성됩니다. 위의 사전 예제에서처럼 객체가 수정되면 함수에 대한 후속 호출은 수정된 객체를 참조합니다.
변경 가능한 객체를 기본값으로 사용하는 문제를 해결하려면 다음과 같이 -
으아악None과 같은 불변 객체를 사용하세요 -
으아악계산 비용이 많이 드는 함수가 있는 경우 한 가지 기술은 함수를 호출할 때마다 인수와 결과 값을 캐시하고 동일한 값이 다시 요청될 때 캐시된 값을 반환하는 것입니다.
이것을 메모이제이션이라고 하며 이렇게 달성할 수 있습니다 -
으아악다음은 결과를 캐시에 저장합니다 −
def foo(mydict={}): ... calculate... mydict[key] = value return mydict
위 내용은 Python에서 객체 간에 기본값이 공유되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!