함수 인수 순서에서 구문 오류 공개
다음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!