среда, 13 ноября 2013 г.
вторник, 12 ноября 2013 г.
понедельник, 11 ноября 2013 г.
2. Поделка для сына. Шоппинг.
Сруб я собирался делать с рубкой углов "в чашу". Поэтому обдумывал, каким инструментом это можно сделать.
Первое, что пришло в голову, это использовать напильник круглого сечения со средней насечкой, с диаметром, примерно равным диаметру бревна. Но в строительном магазине я нашел более интересное решение, это дремель с подходящими насадками.
![]() |
Рубка стен "в чашу". |
четверг, 7 ноября 2013 г.
1. Поделка для сына. Начало.
Как-то раз обрадовали нас с сыном в детском саду тем, что нужно сделать поделку к празднику осени. Пока шли домой я все думал чего же интересного сделать. Картинки из листочков склеить? Пластелиновых зверюшек с теми же листочками, веточками и орешками? Большинство родителей со своими детьми примерно такие поделки и делают. Видимо потому что, как правило, в поделках участвуют мамы. :) В общем, решил я делать что-то немного серьезнее, а именно, домик с небольшим участком, построенный почти по правилам большой стройки. Ну почти... :) Посоветовался с сыном, он одобрил и пошел его рисовать.
Дружно мы взялись за дело и работа закипела!
воскресенье, 18 августа 2013 г.
Проверка существования ключа в словаре.
Обработка исключений
try: d[key] = d[key] + 1 except KeyError: d[key] = 1
Метод has_key
if d.has_key(key): d[key] = d[key] + 1 else: d[key] = 1
Метод setdefault
d[key] = d.setdefault(key, 0) + 1
Метод get
d[key] = d.get(key, 0) + 1
Оператор in
if key in d: d[key] = d[key] + 1 else: d[key] = 1
- Если предполагается почти 100% существование ключей в словаре, то инструкция try except будет самой эффективной на любом наборе данных.
- Если искомый ключ часто не существует, то инструкция try except окажется самой медленной из возможных решений.
- Метод has_key эффективно работает с небольшими наборами данных, на больших ведет себя хуже.
- Методы setdefault и get почти одинаковы по скорости, setdefault незначительно выигрывает.
- Хорошие показатели достигаются с оператором in и на маленьких и на больших наборах данных.
Если есть сомнения что лучше выбрать в конкретной ситуации, лучше использовать оператор in.
А еще лучше - тестировать.
Информацию нашел здесь http://wiki.gungfu.de/Main/PythonIdioms
По этой ссылке полное описание тестов с результатами.
понедельник, 24 июня 2013 г.
Pattern. Singleton (Одиночка).
Одиночка (англ. Singleton) в программировании — порождающий шаблон проектирования.
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа.
class Singleton(object): __instance = None def __new__(cls): if cls.__instance is None: cls.__instance = super(C, cls).__new__(cls) else: cls.__init__ = lambda x: None return cls.__instance
Просмотрел массу решений, в том числе отсуда. В итоге больше понравилось одно из этих, его и опубликовал с небольшими изменениями.
UPD: А вот так еще краше получилось
class Singleton(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(Singleton, cls).__new__(cls) else: cls.__init__ = lambda x: None return cls.instance
Подписаться на:
Сообщения (Atom)