Условие в функции, позволяющее остановить ее при вызове в цикле?

Пожалуйста, рассмотрите эту простую функцию:

def my_func(x):
    if x > 5:
        print(x)
    else:
        quit()

    print('this should be printed only if x > 5')

Затем, если мы вызовем эту функцию в цикле:

for i in [2, 3, 4, 5, 6, 7]:
    my_func(i)

Ожидаемый результат:

6
this should be printed only if x > 5
7
this should be printed only if x > 5

Но quit на самом деле отключает ядро.

Я знаю, что следующая функция будет работать, но я не хочу, чтобы там был второй отпечаток:

def my_func(x):
    if x > 5: 
        print(x)
        print('this should be printed only if x > 5')
    else:
        pass

Наконец, я знаю, что если я помещу цикл внутри функции, я смогу использовать continue или break, но я предпочитаю сохранять функцию простой и вместо этого помещаю вызов функции в цикл. Итак, что нужно изменить в первой функции, чтобы добиться ожидаемого результата?

Это то, что вы ищете? Как остановить функцию. TLDR используйте return для выхода из функции.

wjandrea 25.06.2024 20:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
53
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Действительно, quit() выйдет из приложения. Если вы хотите вернуться из функции, return делает именно это:

def my_func(x):
    if x > 5: print(x)
    else: return

    print('this should be printed only if x > 5')

for i in [2, 3, 4, 5, 6, 7]:
    my_func(i)

Это не имеет ничего общего с циклами. return просто завершает выполнение функции и возвращает управление туда, где функция была вызвана. Если этот элемент управления оказался в цикле, то теперь управление снова возвращается в цикл.

Чтобы завершить функцию преждевременно, вы можете использовать return.

def my_func(x):
    if x > 5: print(x)
    else: return False

    print('this should be printed only if x > 5')

Определенно, но почему False?

wjandrea 25.06.2024 20:37

просто привычка, помогает отлаживать

ivesklein 29.06.2024 22:09

Лучший способ решить эту задачу — проверить обратное условие и вернуться раньше. ИЕ

def my_func(x):
    if x < 5:
        return

    print(f'{x}\nthis should be printed only if x > 5')

Этот шаблон называется защитным заявлением.

wjandrea 25.06.2024 20:36

Другие вопросы по теме