>백엔드 개발 >파이썬 튜토리얼 >Python 함수에서 변경 가능한 기본 매개변수를 사용하여 예기치 않은 동작을 방지하려면 어떻게 해야 합니까?

Python 함수에서 변경 가능한 기본 매개변수를 사용하여 예기치 않은 동작을 방지하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-08 05:36:10234검색

How Can I Avoid Unexpected Behavior with Mutable Default Parameters in Python Functions?

Python의 초기 바인딩된 기본 매개변수: 일반적인 함정 방지

Python에서 기본 매개변수로 작업할 때 잠재적인 위험을 인지하는 것이 중요합니다. 초기 바인딩으로 인해 발생하는 문제. 변경 가능한 데이터 구조(예: 목록)로 초기화된 매개변수와 같은 초기 바인딩된 기본 매개변수는 함수가 여러 번 호출될 때 예기치 않게 동작할 수 있습니다.

다음 예제 함수를 고려하세요.

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)

이 함수를 처음 호출하면 의도한 대로 빈 목록이 초기화되지만 이후 호출에서는 동일한 목록이 업데이트됩니다. 호출할 때마다 목록이 커지면서 의도하지 않은 동작이 발생할 수 있습니다.

이 문제를 방지하려면 변경 가능한 기본 매개변수에 None 기본값을 제공하고 함수 본문 내에서 이를 명시적으로 확인하는 것이 좋습니다. 예제 함수를 수정하는 방법은 다음과 같습니다.

def my_func(working_list=None):
    if working_list is None:
        working_list = []

    working_list.append("a")
    print(working_list)

기본값을 없음으로 설정하고 명시적으로 테스트하면 함수를 호출할 때마다 새 빈 목록이 생성되어 함수가 예상대로 작동하는지 확인합니다. .

추가 고려 사항

PEP 8 지침에 따르면 is 또는 None과의 비교가 == 또는 !=보다 선호됩니다. 이렇게 하면 명확성이 보장되고 잠재적인 오류 위험이 줄어듭니다.

코드에서 예상치 못한 문제를 방지하려면 기본 매개변수를 사용할 때 이러한 지침을 염두에 두십시오.

위 내용은 Python 함수에서 변경 가능한 기본 매개변수를 사용하여 예기치 않은 동작을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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