На работу приняли нового сотрудника. Весьма неглуп, но с Питоном познакомился только после трудоустройства. Основные языки - Ява и Шарп.
Чтобы помочь ему быстро “погрузиться в тему”, создал список важных для меня вещей, на которые стоит обратить внимание.
Привожу письмо практически полностью. Может, кому-то еще будет интересно. Или можно рассматривать его как повод для критики/дополнений.
——————————————————————————————————————-
Стандартная библиотека
Общее
Содержание __builtins__ - это всегда включено в module namespace и не требует import statement
Общие функции - http://docs.python.org/3.0/library/functions.html
Константы - http://docs.python.org/3.0/library/constants.html Особенно интересна NotImplemented. Впрочем, я сейчас интенсивно пользуюсь peak.util.symbols.Symbol
Типы - http://docs.python.org/3.0/library/stdtypes.html
Стандартные исключения - http://docs.python.org/3.0/library/exceptions.html Полезно взглянуть на иерархию. Еще один совет – строить свои типы от RuntimeError, если другие (например AttributeError, TypeError) не подходят лучше. Никогда не бросай Exception – слишком базовый класс, при попытке его перехватить можно скрыть KeyError например, что приводит к сложностям в сопровождении кода. Не старайся откусить больше, чем можешь съесть.
operator
itertools
functools
pprint
weakref
sys – много интересных параметров и настроек интерпретатора живут именно здесь.
Интроспекция
inspect
traceback
Отладка/замеры производительности
pdb
profile/cProfile
timeit
Структуры данных, помимо стандартных tuple, list, dict, set, frozenset
bisect
queue
collections.deque и collections.defaultdict
Файловая система
os
os.path
subprocess
Потоки
threading – и никогда thread, он слишком низкоуровневый и практически никогда не нужен (хотя я знаю и исключения из правила)
logging - как единственное средство. Никаких print в commited codebase
Отдельным пунктом - http://docs.python.org/3.0/reference/datamodel.html
Полное перечисление всех «магических методов» (перегруженных операций), бывающих у объекта. Очень проясняет общую картинку.
Внешнее: zope.interface, семейство peak от PJE – trellis, rules, addons, contextual и проч.
Перечислил только самое важное для меня, оставив многое за кадром.
Дух Питона полностью может быть описан в его Zen of Python:
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let's do more of those!
>>>
Подписываюсь под каждой буквой.