len(s) Возвращает длину (количество элементов) объекта. Аргумент может быть последовательностью (например, строкой, байтами, кортежем, списком или диапазоном) или коллекцией (например, словарём, набором или фиксированным набором).
«pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True) Изменяет представление данных с «широкого» на «длинный», при необходимости оставив заданные идентификаторы.
То есть у каждого из трех id появится по три строки (по одной на каждую метрику — height, weight, age).
Хеллман Д. Стандартная библиотека Python 3, глава 1:
«Значением атрибута t.pattern является скомпилированное регулярное выражение, но исходная строка доступна через его атрибут pattern:
\$(?: (?P<escaped>\$) | # Escape sequence of two delimiters (?P<named>(?a:[_a-z][_a-z0-9]*)) | # delimiter and a Python identifier {(?P<braced>(?a:[_a-z][_a-z0-9]*))} | # delimiter and a braced identifier (?P<invalid>) # Other ill-formed delimiter exprs )»
Это сложное регулярное выражение с именованными группами, которое обрабатывает различные варианты синтаксиса переменных в шаблонах Python.
Хеллман Д. Стандартная библиотека Python 3, глава 1:
«Отсутствие в словаре значения для переменной missing приводит к тому, что метод substitute() возбуждает исключение KeyError. В то же время метод safe substitute() вместо возбуждения исключения перехватывает его и оставляет в тексте само выражение переменной».
«Ключевым отличием шаблонов от строковых подстановок (интерполяции) и форматирования с помощью метода format() является то, что они не учитывают тип аргументов. Значения преобразуются в строки, а строки вставляются в результат. Опции форматирования полностью отсутствуют. Например, не существует способа управлять количеством цифр, используемых для представления значений с плавающей запятой.
Однако шаблоны обладают тем неоспоримым преимуществом, что использование их метода safe_substitute() позволяет избежать возникновения исключений в тех случаях, когда не все значения, в которых нуждаются шаблоны, представлены аргументами».
«Перегрузка операций должна представляться, когда класс естественным образом согласуется с интерфейсами встроенного типа или должен их эмулировать. Коллекции могут имитировать интерфейсы последовательностей или отображений, а вызываемые объекты могут быть реализованы для использования с API-интерфейсом, который ожидает функцию. Однако в целом вы не должны реализовывать операции выражений, если они естественно и логически не подходят для ваших объектов — взамен применяйте нормально именованные методы».
— Point - логичная перегрузка + (сложение координат точек) — Person - нелогичная перегрузка + (сложение людей не имеет математического смысла), но код работает и возвращает строку.
Этот пример демонстрирует принцип: перегружайте операции, только когда это логично и естественно для ваших объектов.
Вызывается для вычисления self[key]. Для типов последовательностей принимаемые ключи должны быть целыми числами. При необходимости они могут также поддерживать объекты срезов. Поддержка отрицательных индексов также необязательна».
Нарезание перехватывается методом индексирования__getitem__: он вызывается с объектом среза, а не с простым целочисленным индексом, и при необходимости объекты срезов можно передавать или ожидать.