Учебные материалы: уроки от Google

Время новогодних каникул хорошо подходит чтобы изучить Python. Мы рекомендуем отличные мастер классы по ситаксису Python от Google

Просмотр этих двух видео достаточно, чтобы начать переводить с человеческого на Python:

more ...

Синтаксис Python: объект среза как объект или встроенный метод slice

В Python списки по реализации похожи на векторы. А векторы это динамические массивы, то есть последовательности элементов. К этим элементам можно обращаться - получить первый, второй, пятый, десятый элемент. Положение в массиве - это индекс.

Но когда надо получить элементы с 1 по 3, или четные, или каждый третий - то одними индексами не обойтись. Поэтому в Python есть понятие - СРЕЗы.

s = [1 ...
more ...

Синтаксис Python: lambda-функции

Python поддерживает интересный синтаксис, позволяющий определять небольшие однострочные функции на лету. Позаимствованные из Lisp, так называемые lambda-функции могут быть использованы везде, где требуется функция.

Небольшой пример

def func(x, y):
    return x**2 + y**2

func = lambda x, y: x**2 + y**2

С одной стороны "прикольно", вместо 2 строк - одна, но сложные конструкции на lambda функциях не напишешь - плохо ...

more ...

Синтаксис Python: применение генераторов

Генераторы Python уже давно используются для решения всевозможных проблем связанных с итерациями и потоками данных. В этом уроке мы рассмотрим некоторые экзотические виды использования генераторов, таких как написание контекста менеджеры, функций обратного вызова (callbacks), устранение рекурсии, workers и много другого.

Внимание - видео очень длинное, но ЖЖУТКО интересное

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: 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 ...