Python — как прервать выполнение функции из другой функции?
Вопрос — как я могу описать такую вещь — есть функция выполняющая определенные действия, внутри нее я вызываю вторую функцию, в которую я передаю функцию-родитель и внутри второй функции я должен исходя из определенных условий либо продолжить выполнение функции-родителя, либо прервать ее выполнение. Возможно ли такое реализовать и, если возможно, то как?
Отслеживать
задан 8 сен 2017 в 4:23
Егор Кулик Егор Кулик
868 1 1 золотой знак 5 5 серебряных знаков 16 16 бронзовых знаков
Описали странное желание (и мне кажется я даже до конца и не понял), мб просто кинуть исключение?
8 сен 2017 в 5:49
Опишите какую проблему пытаетесь решить с помощью прерывания (какой контекст)? Что такое «Ошибка молотка» или «Ошибка XY»?
8 сен 2017 в 6:00
связанный вопрос Можно ли прервать цикл, находясь внутри функции?
8 сен 2017 в 14:33
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Выбросте исключение
(то что предложил jfs)
def child_func(): if something_went_wrong: raise Exception("Something went wrong") def parent_func(): # . try: child_func() except Exception as e: print("Error:", e) return # .
Можно исключение не обрабатывать, если это уместно и не повредит работе (мало ли, может при не выполнении некоего условия вы хотите, что бы все «легло»)
Верните bool
def child_func(): if something_went_wrong: return False # . return True def parent_func(): # . result = child_func() if result: print("Something went wrong") return # .
Остановить функцию из другой
В итоге запускается функция класса №2 с циклом, всё работает, всё окей
вопрос как мне реализовать стоп и рестарт?
Я правильно понимаю что после запуска **.main() класса №2 в которой идёт бесконечный цикл, я уже не могу ничего сделать с ним из вне?
Плохо знаю возможности объектно-ориентированное программирования, но можно ли из класса №1 передать переменную с значение False и в классе №2 сделать в цикле проверку на эту переменную?
Пробовал не работает, получается только могу сделать условие в **.main() класса №2 проверять значение каждый цикл из файле/бд? а переменную обновлять в классе №1 в этом же файле/бд
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как остановить функцию во время её исполнения
Как остановить функцию во время её исполнения from tkinter import * class Start(object): def.
Остановить таймер из другой формы
Из формы №1 (MainWindow) запускаю таймер в классе (Class1), затем пытаюсь остановить его в форме №2.

Как остановить поток из другой кнопки?
private void buttonpause_Click(object sender, EventArgs e) < mainLabel.Text =.

Как остановить плеер, когда играет другой
Здравствуйте. Очень надеюсь на вашу помощь, сама уже несколько дней мучаюсь. На странице есть.
Как остановить выполнение функции в Python?
Для остановки выполнения функции в Python можно использовать ключевой оператор return . Когда функция достигает этого оператора, она прекращает выполнение и возвращает указанное значение.
def func(): print('Часть функции, где код сработает') x = 11 return x # Функция возвращает значение переменной x и завершает свою работу. print('Эта часть функции - нет') y = 22 return y a = func() print(a) # => Часть функции, где код сработает # => 11
Как завершить выполнение функции?
Как мне сделать так, чтобы при вызове функции f из g, функция g не ждала выполнение функции f, а просто завершалась. Любые способы подойдут. Спасибо!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как в PyQt5 остановить выполнение функции
Есть потребность остановить выполнение функции при помощи кнопки в PyQt5. Как я себе это.
Как прекратить выполнение функции?
Приветствую форумчан) С циклами все понятно — break, а как выйти из функции? Например, у меня.
Можно ли завершить досрочно выполнение функции?
можно ли завершить досрочно выполнение функции (типа break но не для цикла)
Как завершить выполнение скрипта?
Суть проблеммы в следующем , скрипт грузится вечно , а мне нужно , чтобы он выполнился , и все.

Как завершить выполнение программы?
Всем снова привет сегодня я хотел бы узнать как обеспечить выход из программы. cout << "Выйти из.
Автоматизируй это!
![]()
7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29
Сообщение от Олег2003 
функция g не ждала выполнение функции f, а просто завершалась.
но там никакого ожидания и нет, все мнгновенно выполняется, причем не понятна суть функции f
Добавлено через 33 секунды
но в целом никак, разве что стартовать ее в отдельном потоке/процессе
Регистрация: 29.09.2017
Сообщений: 9
Суть функции нет. Проблема в том, что функция g не завершится, пока не выполнится функция f, даже если это происходит моментально, мне надо сделать так, чтобы функция g завершалась до выполнения функции f
Am I evil? Yes, I am!
![]()
![]()
18966 / 9661 / 2710
Регистрация: 21.10.2017
Сообщений: 21,467
Сообщение от Олег2003 
функция g завершалась до выполнения функции f
Запускать ее перед функцией f
![]()
5415 / 3839 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от Олег2003 
Вот пример кода:
Не стоит выкладывать в качестве примера то, что примером не является.
Сообщение от Олег2003 
мне надо сделать так, чтобы функция g завершалась до выполнения функции f
Выше тебе написали — запускай поток.
Добавлено через 1 минуту
Сообщение от Олег2003 
Любые способы подойдут.
Если бы ты сумел сформулировать задачу точно, то понял бы, что любые — не подойдут.
Вполне возможно, что тебе нужно на самом деле асинхронное выполнение.
Автоматизируй это!
![]()
7537 / 4554 / 1205
Регистрация: 30.03.2015
Сообщений: 13,116
Записей в блоге: 29
Сообщение от Олег2003 
Проблема в том, что функция g не завершится, пока не выполнится функция f, даже если это происходит моментально, мне надо сделать так, чтобы функция g завершалась до выполнения функции f
отдельный поток, процесс. Контекста же нет в задаче. Может лямбда просто подойдет, она ленивая, выполнишь когда уже сам результат нужен.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как завершить выполнение потока
Делаю так: int btncnt = 0; private void button1_Click_1(object sender, EventArgs e) .

Как завершить выполнение кода (не Exit)?
Ребята помогите с кодом, ниже приведена функция, которая должна проверять значение Edit и в случае.

Как принудительно завершить выполнение запроса?
Допустим, написали вы "тяжелый" запрос, который сильно грузит сервер. Что нужно сделать, чтобы.

Как принудительно завершить выполнение программы?
class Program < static void Main(string args) < Triangle T =.

Как завершить выполнение процедуры раньше времени?
Внутри процедуры, при выполнении определенного условия нужно вывести сообщение и остановить.
Останов Application.OnTime. Как завершить выполнение?
Запускается Application.OnTimeOnTime(EarliestTime, Procedure, LatestTime, Schedule). В коде нет.