«SyntaxError: внешняя функция return» — это довольно распространённая ошибка в Python, особенно среди начинающих разработчиков. Она возникает, когда оператор return используется вне функции.
В этом уроке мы подробно разберём, почему возникает эта ошибка, и расскажем, как её исправить.
Понимание оператора return
Чтобы понять ошибку, сначала необходимо понять роль оператора return в Python.
Оператор return используется в функции для завершения выполнения вызова функции и «возвращает» результат (значение) вызывающей стороне.
Вот пример:
def add_numbers(num1, num2): result = num1 + num2 return result print(add_numbers(5, 7)) # Outputs: 12
В этом коде у нас есть функция add_numbers, которая складывает два числа и использует оператор return для отправки результата обратно вызывающему абоненту.
Что вызывает ошибку?
Из сообщения об ошибке следует, что это происходит, когда выражение «return» используется вне функции. В языке программирования Python оператор «return» можно использовать только внутри определения функции. Если вы попытаетесь использовать его в других частях кода, например, в циклах, условных конструкциях или просто отдельно, это приведёт к ошибке с сообщением «SyntaxError».
Рассмотрим пример, который вызовет эту ошибку. Предположим, у вас есть список оценок, и вы хотите вычислить среднюю оценку. Вы можете написать что-то вроде этого:
grades = [85, 90, 78, 92, 88] total = sum(grades) average = total / len(grades) return average
Если вы запустите этот код, то получите ошибку SyntaxError: «return» внешней функции. Это происходит потому, что вы используете return в основной части кода, а не внутри функции.
Как исправить ошибку?
Эту ошибку легко исправить. Убедитесь, что оператор return используется только внутри определений функций.
Если вы пытаетесь использовать оператор return в основном скрипте, то подумайте, действительно ли вам нужно возвращать значение. Если вы хотите вывести значение на консоль — используйте функцию print(). А если вы хотите завершить выполнение скрипта — рассмотрите возможность использования функции sys.exit().
Вот как можно исправить ошибку, показанную в предыдущем разделе:
def calculate_average(grades): total = sum(grades) average = total / len(grades) return average grades = [85, 90, 78, 92, 88] print(calculate_average(grades)) # Outputs: 86.6
В этом обновлённом коде мы создали функцию с названием Calculate_average, которая принимает список оценок. Затем функция вычисляет среднее значение и возвращает его.
Теперь оператор return правильно размещён внутри функции, поэтому ошибка синтаксиса отсутствует.
Наконец, мы вызываем эту функцию и выводим возвращаемое значение.