Как стать автором
Обновить
1
@web-monkread⁠-⁠only

Пользователь

Отправить сообщение

Как работает yield

Время на прочтение6 мин
Количество просмотров699K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Всего голосов 141: ↑136 и ↓5+131
Комментарии41

10 полезных сочетаний клавиш в PyCharm

Время на прочтение2 мин
Количество просмотров154K

Привет, мои дорогие!

Сегодня я хочу поделиться с вами своими лайфхаками касательно работы в PyCharm, ведь мы все хотим сократить время разрабатывая проект, а в этом нам помогут быстрые команды при помощи сочетаний клавиш. Так как я предпочитаю пользоваться операционной системой семейства Windows, сочетания клавиш будут заточены под нее. Перед тем как применять данные комбинации, проследите за тем чтобы у вас стояла английская раскладка, иначе, команды будут совсем другие.

Читать далее
Всего голосов 17: ↑5 и ↓12-6
Комментарии12

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Backend Developer
Python
PostgreSQL
Nginx
Django
OOP
Git
Docker