/
Вопросы и ответы
/
Python
/

Как остановить выполнение функции в Python?

Как остановить выполнение функции в Python?

4 года назад

Andrey Moshkov

Ответы

2

Иногда в ходе работы функции может возникнуть необходимость прервать ее выполнение до завершения всех инструкций. Для этого мы можем использовать ключевое слово return.

return используется для возврата значения из функции и одновременно остановки выполнения функции. Давайте посмотрим на пример:

1
2
3
4
5
6
7
8
9
10
11
def check_number(num):
    if num < 0:
        return "Число меньше нуля, выполнение функции прерывается."
    else:
        return "Число положительное."

result1 = check_number(-5)
print(result1)  # Выведет: "Число меньше нуля, выполнение функции прерывается."

result2 = check_number(10)
print(result2)  # Выведет: "Число положительное."

В этом примере, если число num меньше нуля, функция check_number() сразу возвращает сообщение о том, что число меньше нуля, и выполнение функции прекращается. Если число положительное, то функция возвращает другое сообщение.

Таким образом, ключевое слово return позволяет остановить выполнение функции и вернуть определенное значение. Весь код, стоящий в функции после return, выполнен не будет.

3 года назад

Maksim Litvinov

0

Для остановки выполнения функции в Python можно использовать ключевой оператор return. Когда функция достигает этого оператора, она прекращает выполнение и возвращает указанное значение.

1
2
3
4
5
6
7
8
9
10
11
12
def func():
    print('Часть функции, где код сработает')
    x = 11
    return x # Функция возвращает значение переменной x и завершает свою работу.
    print('Эта часть функции - нет')
    y = 22
    return y

a = func()
print(a)
# => Часть функции, где код сработает
# => 11

4 года назад

Дмитрий Ибрагимов

0

Функцию завершает оператор return. Код после него внутри функции не выполняется:

1
2
3
4
5
6
7
8
def check_age(age):
    if age < 0:
        print("Возраст не может быть отрицательным")
        return            # выход из функции
    print("Возраст:", age)

check_age(-5)   # Возраст не может быть отрицательным
check_age(20)   # Возраст: 20

return без значения возвращает None. Можно сразу вернуть результат: return age * 2.

Что остановить: функцию, цикл или программу

Что нужноКак
Выйти из функцииreturn
Выйти из цикла, остаться в функцииbreak
Перейти к следующей итерации циклаcontinue
Сообщить об ошибке и прервать выполнениеraise ValueError("...")
Завершить всю программуsys.exit()
Остановить зависшую программу в терминалеCtrl + C

Ранний выход из функции

Проверки с return в начале функции убирают вложенные if:

1
2
3
4
5
6
def discount(price, code):
    if price <= 0:
        return 0
    if code != "HEXLET":
        return price
    return price * 0.9

Остановить функцию с ошибкой

Если с данными что-то не так, функцию прерывают исключением. Вызывающий код его поймает:

1
2
3
4
5
6
7
8
9
def divide(a, b):
    if b == 0:
        raise ValueError("Делить на ноль нельзя")
    return a / b

try:
    divide(1, 0)
except ValueError as e:
    print(e)   # Делить на ноль нельзя

Выйти из вложенных циклов

break выходит только из одного цикла. Чтобы выйти из обоих, вынесите циклы в функцию и используйте return:

1
2
3
4
5
6
7
8
def find(matrix, target):
    for i, row in enumerate(matrix):
        for j, value in enumerate(row):
            if value == target:
                return i, j
    return None

print(find([[1, 2], [3, 4]], 3))  # => (1, 0)

Завершить всю программу

1
2
3
4
5
import sys

if not data:
    print("Нет данных")
    sys.exit(1)   # код 1 — завершение с ошибкой

sys.exit() выбрасывает исключение SystemExit. Блоки finally при этом выполнятся.

Функция в другом потоке

Поток нельзя остановить снаружи. Функция должна сама проверять флаг:

1
2
3
4
5
6
7
8
9
10
11
12
import threading, time

stop = threading.Event()

def worker():
    while not stop.is_set():
        time.sleep(0.5)

t = threading.Thread(target=worker)
t.start()
stop.set()   # попросить функцию завершиться
t.join()

Функции, циклы и исключения разбирают в бесплатном курсе «Основы Python».

18 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845