Синтаксис Python: слайсы/срезы

Синтаксис Python легкий, читаемый. Хочется упомянуть массивы (как структура с последовательными элементами). В Python они бывают разные - list, tuple, строки Операции с массивами:

  • Получить копию
  • Получить первые/последние N элементов
  • Получить N элементом с позиции M
  • Получить каждый N элемент
  • Развернуть

Все эти операции и их комбинации отлично выполняются оператором [] - метод __getitem__ Для примера:

>>> s = [1, 2, 3, 4, 6 ...
more ...

Синтаксис Python: переменная __all__

Вы наверное слышали фразу "wild import - зло". В коде это выглядит так

from my_super_module import *

Ответ почему это "зло" очень простой - вы импортируете всё - то что надо и то что не надо. А значит вы можете смело перегрузить какой-то метод. Как же быть? Можно импортировать только нужные переменные и функции/классы, что является правильным подходом. Но ведь должен быть альтернативный ...

more ...

Синтаксис Python: do...while

Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do while называют циклом с постусловием. Таким образом, если условие do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится.

Иииии.... такой конструкции - do...while нет в Python ...

more ...

Синтаксис Python: frozenset - морозное множество

frozenset и set, это как кортеж (tuple) и список. Первые являются неизменяемыми, вторые изменяемые.

Иммутабельные(неизменяемые) структуры данных - это коллекции, которые нельзя изменить. Примерно как числа. Число просто есть, его нельзя поменять. Также и иммутабельный массив — он такой, каким его создали, и всегда таким будет. Если нужно добавить элемент — придется создать новый массив.

Преимущества неизменяемых структур:

  • Безопасно разделять ссылку между ...
more ...

Синтаксис Python: dir()

Достался нам в наследство какой-то код. А там непонятный объект с названием super_object_1. Как понять что это за объект?

На помощь приходят встроенные функции - type(), dir(). Если с type() все ясно - возвращает тип, то с dir не совсем.

dir - Возвращает имена переменных, доступные в локальной области, либо атрибуты указанного объекта в алфавитном порядке. Это значит, что при вызове кода:

dir ...
more ...

Синтаксис Python: yield from

Рассмотрим еще одну страшную конструкцию в Python 3.3+ - yield from

Напомню, генератор это объект который можно про итерировать только однажды. Записывается как:

f = (x for x in xrange(100)) 
# Или так
def gen():
    for x in range(100):
        yield x

Когда у нас один генератор - все хорошо. Используем его как итератор и радуемся. Но не редки ситуации когда есть ...

more ...

Синтаксис Python: encode/decode

Вероятно, самым заметным отличием Python 2 от Python 3 является юникод. Это нововведение упростило работу со строками. Однако, так как Python 2 еще в строю, то кодировки еще в силе и не мало разработчиков путается между encode и decode.

Стоит привести картинку, которая прояснит все:

Image

Таким образом, если у нас есть строка:

a = 'Cool page'

То существует множество способов (кодировок ...

more ...

Синтаксис Python: работа с матрицами

Матрица - это, если утрировать, "табличка", N-мерный массив (чаще всего двумерный). Матрицы возникают не редко. Например, игровое поле, карта мира - тоже можно представить матрицей, да то же решето Эратосфена - тоже двумерный массив, или вообще - вложенные списки.

Это все создает необходимость знать как работать с матрицами и какими инструментами. Модулей для работы с этими объектами не мало, самые известные - стандартный math и ...

more ...