воскресенье, 1 ноября 2020 г.

ЛМНты Python, 86 - 90

>>> Стиль имеет значение

PEP8 – это руководство по стилю кодирования на Python. PEP8 рекомендует, чтобы имена функций и переменных использовали буквы только в нижнем регистре и _ (подчеркивание) в качестве разделителя слов:

i
name
full_name

Использование однобуквенных переменных l (эл), O (оу) и I (ай) считается злом, так как их непросто отличить от цифр 1 и 0 или друг от друга (l и I).

суббота, 10 октября 2020 г.

ЛМНты Python, 81 - 85

>>> Глубина копирования

Метод copy выполняет поверхностное копирование, связывая атрибуты объекта-копии с теми же объектами, с которыми связаны атрибуты объекта-оригинала. Иными словами, объекты, на которые ссылаются атрибуты копируемого объекта, не копируются:

>>> a = [
...     [1, 2, 3],
...     [4, 5, 6]
... ]
>>>
>>> b = a.copy()
>>> b[1][0] = -4
>>> b[1][1] = -5
>>> b[1][2] = -6
>>>
>>> b
[[1, 2, 3], [-4, -5, -6]]
>>> a
[[1, 2, 3], [-4, -5, -6]]
>>>
>>> a[1] is b[1]
True

вторник, 1 сентября 2020 г.

ЛМНты Python, 76 - 80

>>> Разоблачение operator.itemgetter

Боюсь, последний пример с функцикй itemgetter непонятен или не нагляден.

Функция itemgetter возвращает функцию (точнее, callable объект), которая принимает на вход последовательность и возвращает элемент последовательности с нужным индексом:

>>> from operator import itemgetter
>>>
>>> getitem2 = itemgetter(2)
>>> getitem2(['a','b','c'])
'c'
>>> itemgetter(0)(['a','b','c'])
'a'
>>> itemgetter(1)(['a','b','c'])
'b'

суббота, 1 августа 2020 г.

ЛМНты Python, 71 - 75

>>> Ваша правда

В отлиичие от пустых объектов стандартных классов, объект вашего класса по умолчанию оценивается как True:

>>> class B(object):
...     pass
...
>>> b = B()
>>> if b:
...     print('True')
...
True
>>> bool(b)
True

Для того, чтобы ваш объект был оценен как False, его метод __len__ должен возвращать 0 или метод __bool__ – возвращать False.

среда, 1 июля 2020 г.

ЛМНты Python, 66 - 70

>>> Ещё множества могут

С помощью расширенных операторов присваивания (или соответствующих им методов) можно присваивать левому множеству результат операции над ним и правым множеством:

>>> a, b = ({1, 2, 3}, {3, 4, 5})
>>> # объединение
... a |= b
>>> a.update(b)
>>> a
{1, 2, 3, 4, 5}
>>>
>>> a, b = ({1, 2, 3}, {3, 4, 5})
>>> # пересечение
... a &= b
>>> a.intersection_update(b)
>>> a
{3}
>>>
>>> a, b = ({1, 2, 3}, {3, 4, 5})
>>> # разность
... a -= b
>>> a.difference_update(b)
>>> a
{1, 2}
>>>
>>> a, b = ({1, 2, 3}, {3, 4, 5})
>>> # симметрическая разность
... a ^= b
>>> a.symmetric_difference_update(b)
>>> a
{1, 2, 3}

См. также лмнт Множества могут.