Возврат может закрыть L oop для? (Python / django) - PullRequest
3 голосов
/ 24 апреля 2020

return на python закрывает L oop для? Я спрашиваю об этом, потому что я написал код, который будет искать меня в списке, и если он узнает этого человека, он вернет мне его возраст, а если нет, скажет: «Человек не найден». Если человек находится на первом месте массива, если он найдет его, но если он находится на втором месте, он не знает, почему? люди в массиве правильно.

Ответы [ 4 ]

2 голосов
/ 24 апреля 2020

Когда вы вызываете оператор return, он прекращает выполнение текущей функции и возвращает значение. Поэтому, если вы будете использовать return внутри вашего l oop, return завершит работу l oop и функции и вернет некоторое значение.

1 голос
/ 24 апреля 2020

return далее завершает выполнение и возвращает желаемое значение (по умолчанию None). Измените отступ, чтобы ваш код работал:

def lerDoBanco(name):
    lista_names = [
        {'name': 'Joaquim', 'age': 20},
        {'name': 'João', 'age': 25},
        {'name': 'Ana', 'age': 27}
    ]

    for person in lista_names:
        if person['name'] == name:
            return person
    return {'name': 'Person not found', 'age': 0}

Он будет перебирать все значения, чтобы найти человека, а затем, если не найден, будет возвращено значение по умолчанию {'name': 'Person not found', 'age': 0}.

0 голосов
/ 24 апреля 2020

A l oop заканчивается, когда происходит одно из следующих событий:

  1. l oop условие оценивается как ложное
  2. используется разрыв
  3. исключение
  4. выполняется оператор возврата

Точки выше одинаковы для всех языков программирования

0 голосов
/ 24 апреля 2020

С того момента, как вы return выйдете из функции, то же самое из for l oop.

То, что вы можете сделать, это просто return 'Person not found' в конце функции:

def lerDoBanco(name):
    lista_names = [
        {'name': 'Joaquim', 'age': 20},
        {'name': 'João', 'age': 25},
        {'name': 'Ana', 'age': 27}
    ]

    for person in lista_names:
        if person['name'] == name:
            return person
    <b>return</b> {'name': 'Person not found', 'age': 0}

Обратите внимание, что если данные хранятся в базе данных, лучше создать набор запросов для фильтрации на стороне базы данных . Базы данных оптимизированы для эффективного поиска. Вы также можете указать db_index=True для столбца так, чтобы база данных создавала индекс, позволяющий намного быстрее извлекать данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...