Python에서 "SyntaxError: Non-Default Argument Follows Default Argument" 오류를 해결하는 방법
오늘 이 글에서는 Python에서"SyntaxError: Non-Default Argument Follows Default Argument" 오류를 해결하는 방법에 대해 다룰 것입니다. 일반적인 오류는 함수 정의에서 하나 이상의 인수에 대한 기본값을 제공한 다음 기본 인수 뒤에 기본이 아닌 인수를 배치할 때 발생합니다.
이 글에서는 다음 주제를 다룹니다.
- 기본 및 기본이 아닌 인수 이해
- 이 오류가 발생하는 이유
- 오류 해결 방법
- 예 및 설명
- 모범 사례
기본 및 기본이 아닌 인수 이해
오류를 해결하기 전에 Python의 기본 인수와 기본이 아닌 인수의 차이점을 이해하는 것이 중요합니다.
기본 인수
기본 인수는 기본값이 할당된 함수의 매개변수입니다. 호출자가 기본 인수 값을 제공하지 않으면 함수는 지정된 기본값을 사용합니다. 기본 인수는 등호( =) 뒤에 기본값이 오는 것으로 정의됩니다.
def greet(name, greeting="Hello"):
print(greeting, name)
이 예에서 는 greeting기본값이 "Hello"인 기본 인수입니다. 에 대한 값을 제공하지 않으면 greeting함수는 "Hello"를 값으로 사용합니다.
기본이 아닌 인수
위치 인수 또는 필수 인수라고도 하는 기본이 아닌 인수는 호출자가 제공해야 하는 함수의 매개 변수입니다. 기본값이 없으므로 호출자는 항상 값을 제공해야 합니다.
def greet(name, greeting):
print(greeting, name)
이 예에서 및 둘 name다 greeting기본값이 아닌 인수이며 호출자는 둘 다에 대한 값을 제공해야 합니다.
이 오류가 발생하는 이유
하나 이상의 기본 인수 다음에 기본 인수가 아닌 인수로 함수를 정의하면 "구문 오류: 기본 인수가 아닌 인수가 기본 인수를 따릅니다."가 발생합니다.Python은 함수 호출에서 모호성을 생성하기 때문에 이를 허용하지 않습니다.
다음 예를 고려하십시오.
def example_function(a=1, b):
pass
SyntaxError를 해결하는 방법: 기본 인수가 아닌 인수가 기본 인수를 따릅니다.
"SyntaxError: 기본 인수가 아닌 인수가 기본 인수를 따릅니다." 오류를 해결하려면 기본 인수가 아닌 모든 인수가 함수 정의의 기본 인수 앞에 배치되었는지 확인하십시오.
인수에 대한 기본값을 제공하려면 모든 필수 인수 뒤에 오는지 확인하십시오.
def example_function(b, a=1):
pass
이 예에서는 기본 인수 앞에 기본이 아닌 인수를 배치하여 오류를 수정했습니다.
예 및 설명
다양한 상황에서 이 오류를 해결하는 방법을 더 잘 이해하기 위해 몇 가지 예를 살펴보겠습니다.
예제 1: 하나의 기본값과 하나의 기본이 아닌 인수가 있는 단순 함수
# Incorrect function definition
def greet(greeting="Hello", name):
print(greeting, name)
# Correct function definition
def greet(name, greeting="Hello"):
print(greeting, name)
# Calling the function
greet("Alice")
산출:
Hello Alice
이 예에서 잘못된 함수 정의는 기본 인수가 greeting아닌 인수 앞에 기본 인수가 있어 name구문 오류가 발생합니다.
name기본 인수 앞에 기본이 아닌 인수를 배치하여 오류를 수정합니다.
예제 2: 기본 인수와 기본이 아닌 인수가 여러 개인 함수
# Incorrect function definition
def calculate(a=0, b, operation="+"):
if operation == "+":
return a + b
elif operation == "-":
return a - b
elif operation == "*":
return a * b
elif operation == "/":
return a / b
# Correct function definition
def calculate(b, a=0, operation="+"):
if operation == "+":
return a + b
elif operation == "-":
return a - b
elif operation == "*":
return a * b
elif operation == "/":
return a / b
# Calling the function
print(calculate(5))
print(calculate(3, 2))
print(calculate(3, 2, "*"))
산출:
5
5
6
이 예에서 잘못된 함수 정의는 기본 인수가 a아닌 인수 앞에 기본 인수가 있어 b구문 오류가 발생합니다.
예 3: 키워드 전용 인수가 있는 함수
*함수 정의에서 문자를 사용하여 다음 인수가 모두 키워드 전용 인수임을 나타낼 수 있습니다. 이렇게 하면 구문 오류를 일으키지 않고 기본이 아닌 인수 앞에 기본 인수를 가질 수 있습니다.
# Correct function definition with keyword-only arguments
def display_data(first_name, last_name, *, age=None, city=None):
print(f"Name: {first_name} {last_name}")
if age:
print(f"Age: {age}")
if city:
print(f"City: {city}")
# Calling the function
display_data("Alice", "Smith", age=30, city="New York")
산출:
Name: Alice Smith
Age: 30
City: New York
이 예에서는 문자를 사용하여 and 가 키워드 전용 인수임을 *나타냅니다 . 이를 통해 구문 오류를 일으키지 않고 기본 인수가아닌 기본 인수 앞에 기본 인수를 가질 수 있습니다. agecityagecityfirst_namelast_name
모범 사례
Python 코드에서 "SyntaxError: 기본 인수가 아닌 인수가 기본 인수를 따릅니다" 오류를 방지하려면 다음 모범 사례를 따르십시오.
- 항상 함수 정의에서 기본 인수 앞에 기본이 아닌 인수를 배치하십시오.
- 기본이 아닌 인수 앞에 나타나야 하는 인수에 대한 기본값을 제공하려면 *함수 정의의 문자와 함께 키워드 전용 인수를 사용하는 것이 좋습니다.
- 기본 인수와 기본이 아닌 인수가 모두 있는 함수로 작업할 때 함수 호출에서 키워드 인수를 사용하여 코드를 더 읽기 쉽고 오류가 덜 발생하도록 하는 것을 고려하십시오.
이러한 모범 사례를 따르면 "SyntaxError: 기본 인수가 아닌 인수가 기본 인수를 따릅니다" 오류를 방지하는 보다 강력하고 유지 관리 가능한 Python 코드를 작성할 수 있습니다.