Pull to refresh
99
0
Андрей Смоленский @qrazydraqon

User

Send message

Метаклассы в Python

Reading time10 min
Views188K
Как сказал один из пользователей StackOverflow, «using SO is like doing lookups with a hashtable instead of a linked list». Мы снова обращаемся к этому замечательному ресурсу, на котором попадаются чрезвычайно подробные и понятные ответы на самые различные вопросы.

В этот раз мы обсудим, что такое метаклассы, как, где и зачем их использовать, а также почему обычно этого делать не стоит.

Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments17

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

Reading time6 min
Views663K
На 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/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Компании IBM исполняется 100 лет

Reading time1 min
Views2.1K


16 июня 1911 года в США была основана компания Computing Tabulating Recording, включившая в себя Computing Scale Company of America, Tabulating Machine Company и International Time Recording Company, а с 1914 года она известна как International Business Machines или, сокращённо, IBM.

Без преувеличения можно сказать, что компания IBM очень сильно повлияла на мир, в котором мы с вами сегодня живём. Посудите сами: жёсткие диски, Фортран, DRAM, дискеты, SQL (и вообще концепция реляционной базы данных), штрих-коды — всё это появилось в стенах IBM. Кроме того, сотрудниками IBM была открыта высокотемпературная сверхпроводимость и изобретён сканирующий туннельный микроскоп, за что в 1987 и 1986 годах соответственно были получены Нобелевские премии по физике. Бенуа Мандельброт написал свою знаменитую статью о фракталах для журнала Science тоже будучи сотрудником IBM.

Deep Blue, наконец — ещё один важный шаг в развитии компьютерной техники.

Хорошая компания, что и говорить. Желаем ей дальнейших успехов и процветания.

Ссылки по теме:
www.ibm100.com
www-03.ibm.com/press/us/en/presskit/32887.wss
Total votes 109: ↑108 and ↓1+107
Comments135

Сортировка топиков в блоге

Reading time1 min
Views703
Ситуация: человек читает хабр не очень давно (как я, например) и натыкается на блог по интересующей его тематике. Но в этом блоге оказывается довольно большое количество топиков (в «Я умный» их 2355, поди найди ещё действительно хорошие!), и человек несколько теряется.
Предложение: добавить кнопку «Отсортировать по рейтингу». Нажал — и вот тебе лучшее в данном блоге. Для новоприбывших и просто желающих почитать было бы очень полезно, я думаю.
Total votes 34: ↑33 and ↓1+32
Comments5

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity