>백엔드 개발 >파이썬 튜토리얼 >Python 함수 정의에서 기본값이 아닌 인수가 기본 인수보다 앞에 있어야 하는 이유는 무엇입니까?

Python 함수 정의에서 기본값이 아닌 인수가 기본 인수보다 앞에 있어야 하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-31 23:33:28726검색

Why Do Non-Default Arguments Have to Precede Default Arguments in Python Function Definitions?

함수 인수 순서에서 구문 오류 공개

다음 Python 코드에서 SyntaxError가 발생하는 이유는 무엇입니까?

def fun1(a="who is you", b="True", x, y):
    print a,b,x,y

오류가 발생하는 이유는 기본이 아닌 인수(x 및 y)가 기본 인수(a 및 y)보다 앞에 있어야 하기 때문입니다. b) 함수 서명에서. 필수 매개변수는 기본값이 있는 선택적 매개변수 앞에 와야 합니다.

혼합 모드의 위험

기본 인수 뒤에 기본 인수가 아닌 인수를 허용하면 해석기에서 모호함이 발생할 수 있습니다. 어떤 값이 어떤 인수에 해당하는지 확인합니다. 다음 시나리오를 고려하십시오.

def fun1(a, b, x="who is you", y="True"):
    ...

다음 인수를 사용하여 이 함수를 호출한다고 가정합니다.

fun1(1, "ok")  # 1 assigned to x, "ok" assigned to a or b?

순서 규칙이 없으면 인수에 값을 명확하게 할당하는 것이 불가능합니다.

올바른 함수 구문 인수

함수를 올바르게 정의하려면 기본 인수가 항상 기본이 아닌 인수 뒤에 와야 합니다. 예제 함수의 올바른 구문은 다음과 같습니다.

def fun1(x, y, a="who is you", b="True"):
    ...

이 구문을 사용하면 키워드 인수와 누락된 인수가 있는 경우에도 인터프리터가 결정론적인 방식으로 인수에 값을 할당할 수 있습니다.

키워드 인수 Rescue

키워드 인수를 사용하면 인수 이름을 지정하여 기본값을 재정의할 수 있습니다. 명시적으로. 이는 누락된 인수를 건너뛰는 데 특히 유용합니다. 예를 들어, fun1에 대한 다음 호출을 고려해보세요.

fun1(x=1, b="False")  # Override default value of b

결론

기본 인수 뒤에 오는 기본이 아닌 인수에 대한 제한은 함수 호출의 명확하고 모호하지 않은 해석을 보장합니다. , 잘못된 인수 할당으로 인한 구문 오류 및 런타임 오류를 방지합니다.

위 내용은 Python 함수 정의에서 기본값이 아닌 인수가 기본 인수보다 앞에 있어야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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