- 1
- 2
- 3
auto = False
if self.options.has_key('auto') and self.options['auto']:
auto = True
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−180
auto = False
if self.options.has_key('auto') and self.options['auto']:
auto = True
auto = self.options.get('auto') #ftw!
Правильно: auto = self.option.get('auto', False).
In [3]: %timeit a.get('1', 4)
1000000 loops, best of 3: 568 ns per loop
In [4]: %timeit ('1' in a and a['1'])
1000000 loops, best of 3: 407 ns per loop
Можете объяснить почему? Или что-то почитать на эту тему?
А вот defaultdict (для тех случаев, когда возможно), ещё быстрее — только одна операция.
Кстати, никогда не используйте has_key.
И в этом случае уже может рассматриваться и вариант с try/except.
Если ключ обычно есть в словаре, то вариант с исключениями тоже оказывается быстрее get.