6. Python – Основные операторы языка
Python – это универсальный язык, который можно использовать для создания всевозможных приложений. Мы рассмотрим основные операторы в Python. Вы должны хорошо понимать, как использовать основные операторы в Python.
Давайте разберёмся, что такое операторы. Операторы – это конструкции, которые могут управлять значением операндов.
Рассмотрим выражение «4 + 5 = 9». Здесь «4» и «5» называются операндами, а «+» называется оператором.
Типы операторов
В Python есть множество операторов, которые можно использовать для выполнения операций над переменными и значениями. Наиболее распространенными операторами являются арифметические операторы, которые используются для выполнения математических операций, таких как сложение, вычитание, умножение и деление. Существуют также операторы сравнения, которые используются для сравнения двух значений, и логические операторы, которые используются для объединения нескольких условий.
Язык Python поддерживает следующие типы операторов:
- Арифметические операторы.
- Операторы сравнения (отношения).
- Операторы присваивания.
- Логические операторы.
- Побитовые операторы.
- Операторы членства.
- Операторы идентификации.
Давайте посмотрим все операторы Python один за другим.
Оглавление
- 1. Python – Самоучитель для начинающих
- 2. Python – Обзор
- 3. Python – Установка среды
- 4. Python – Базовый синтаксис
- 4.1. Python – Аргументы командной строки
- 5. Python – Типы переменных
- 6. Python – Основные операторы
- 6.1. Python – Арифметические операторы
- 6.2. Python – Операторы сравнения
- 6.3. Python – Операторы присваивания: примеры
- 6.4. Python – Побитовые операторы
- 6.5. Python – Логические операторы
- 6.6. Python – Операторы членства
- 6.7. Python – Операторы идентификации
- 6.8. Python – Приоритет операторов
- 7. Python – Условные операторы
- 7.1. Python – Условие if
- 7.2. Python – Условные операторы if. else и elif
- 7.3. Python – Вложенные операторы if
- 8. Python – Циклы
- 8.1. Python – Цикл while
- 8.2. Python – Цикл for
- 8.3. Python – Вложенные циклы
- 8.4. Python – Оператор break
- 8.5. Python – Оператор continue
- 8.6. Python – Оператор pass
- 9. Python – Числа
- 9.1. Python – Метод abs()
- 9.2. Python – Метод ceil()
- 9.3. Python – Метод cmp()
- 9.4. Python – Метод exp()
- 9.5. Python – Метод fabs()
- 9.6. Python – Метод floor()
- 9.7. Python – Метод log()
- 9.8. Python – Метод log10()
- 9.9. Python – Метод max()
- 9.10. Python – Метод min()
- 9.11. Python – Метод modf()
- 9.12. Python – Метод pow()
- 9.13. Python – Метод round()
- 9.14. Python – Метод sqrt()
- 9.15. Python – Метод choice()
- 9.16. Python – Метод randrange()
- 9.17. Python – Метод random()
- 9.18. Python – Метод seed()
- 9.19. Python – Метод shuffle()
- 9.20. Python – Метод uniform()
- 9.21. Python – Метод acos()
- 9.22. Python – Метод asin()
- 9.23. Python – Метод atan()
- 9.24. Python – Метод atan2()
- 9.25. Python – Метод cos()
- 9.26. Python – Метод hypot()
- 9.27. Python – Метод sin()
- 9.28. Python – Метод tan()
- 9.29. Python – Метод degrees()
- 9.30. Python – Метод radians()
Операторы Python
В этом руководстве речь пойдет об операторах языка программирования Python. Вы узнаете об арифметических, логических и битовых операторах, а также операторах сравнения, присваивания, принадлежности, тождественности и их синтаксисе. Все это будет проиллюстрировано примерами.
Оператор в Python — это символ, который выполняет операцию над одним или несколькими операндами.
Операндом выступает переменная или значение, над которыми проводится операция.
Введение в операторы Python
Операторы Python бывают 7 типов:
- Арифметические операторы
- Операторы сравнения
- Операторы присваивания
- Логические операторы
- Операторы принадлежности
- Операторы тождественности
- Битовые операторы
Арифметические операторы Python
Этот тип включает операторы для проведения базовых арифметических операций.
Сложение (+)
Складывает значение по обе стороны оператора.
Пример:
Вычитание (-)
Вычитает значение правой стороны из значения в левой.
Пример:
Умножение (*)
Перемножает значения с обеих сторон оператора.
Пример:
Деление (/)
Делит значение левой стороны на значение правой. Тип данных результата деления — число с плавающей точкой.
Пример:
Возведение в степень (**)
Возводит первое число в степень второго.
Пример:
Деление без остатка (//)
Выполняет деление и возвращает целочисленное значение частного, убирая цифры после десятичной точки.
Пример:
Деление по модулю (остаток от деления) (%)
Выполняет деление и возвращает значение остатка.
Пример:
>>> 10.5%3
Операторы сравнения
Операторы сравнения в Python проводят сравнение операндов. Они сообщают, является ли один из них больше второго, меньше, равным или и то и то.
Меньше (<)
Этот оператор проверяет, является ли значение слева меньше, чем правое.
Пример:
False
Больше (>)
Проверяет, является ли значение слева больше правого.
Пример:
True
Меньше или равно (<=)
Проверяет, является ли левая часть меньше или равной правой.
Пример:
True
Больше или равно (>=)
Проверяет, является ли левая часть больше или равной правой.
Пример:
True
Равно (==)
Этот оператор проверяет, равно ли значение слева правому. 1 равна булевому True , а 2 (двойка) — нет. 0 равен False .
Пример:
True
>>> 1==True
True
>>> 7==True
False
>>> 0==False
True
>>> 0.5==True
False
Не равно (!=)
Проверяет, не равно ли значение слева правому. Оператор <> выполняет ту же задачу, но его убрали в Python 3.
Когда условие выполнено, возвращается True . В противном случае — False . Это возвращаемое значение можно использовать в последующих инструкциях и выражениях.
Пример:
False
>>> 1==True # Это вызывает SyntaxError
Операторы присваивания
Оператор присваивания присваивает значение переменной. Он может манипулировать значением до присваивания. Есть 8 операторов присваивания: 1 простой и 7 с использованием арифметических операторов.
Присваивание (=)
Присваивает значение справа левой части. Стоит обратить внимание, что == используется для сравнения, а = — для присваивания.
Пример:
>>> a = 7 >>> print(a)
Сложение и присваивание (+=)
Суммирует значение обеих сторон и присваивает его выражению слева. a += 10 — это то же самое, что и a = a + 10 .
То же касается и все остальных операторов присваивания.
Пример:
>>> a += 2 >>> print(a)
Вычитание и присваивание (-=)
Вычитает значение справа из левого и присваивает его выражению слева.
Пример:
>>> a -= 2 >>> print(a)
Деление и присваивание (/=)
Делит значение слева на правое. Затем присваивает его выражению слева.
Пример:
>>> a /= 7 >>> print(a)
Умножение и присваивание (*=)
Перемножает значения обеих сторон. Затем присваивает правое левому.
Пример:
>>> a *= 8 >>> print(a)
Деление по модулю и присваивание (%=)
Выполняет деление по модулю для обеих частей. Результат присваивает левой части.
Пример:
>>> a %= 3 >>> print(a)
Возведение в степень и присваивание (**=)
Выполняет возведение левой части в степень значения правой части. Затем присваивает значение левой части.
Пример:
>>> a **= 5 >>> print(a)
Деление с остатком и присваивание (//=)
Выполняет деление с остатком и присваивает результат левой части.
Пример:
>>> a //= 3 >>> print(a)
Это один из важных операторов Python
Логические операторы Python
Это союзы, которые позволяют объединять по несколько условий. В Python есть всего три оператора: and (и), or (или) и not (не).
И (and)
Если условия с двух сторон оператора and истинны, тогда все выражение целиком считается истинным.
Пример:
>>> a = 7 > 7 and 2 > -1 >>> print(a)
False
Или (or)
Выражение ложно, если оба операнда с двух сторон ложные. Если хотя бы одно из них истинное, то и все выражение истинно.
Пример:
>>> a = 7 > 7 or 2 > -1 >>> print(a)
True
Не (not)
Этот оператор инвертирует булевые значения выражения. True превращается в False и наоборот. В примере внизу булево значение 0 — False . Поэтому оно превращается в True .
Пример:
>>> a = not(0) >>> print(a)
True
Операторы принадлежности
Эти операторы проверяют, является ли значение частью последовательности. Последовательность может быть списком, строкой или кортежем. Есть всего два таких оператора: in и not in .
В (in)
Проверяет, является ли значение членом последовательности. В этом примере видно, что строки fox нет в списке питомцев. Но cat — есть, поэтому она возвращает True . Также строка me является подстрокой disappointment . Поэтому она вернет True .
Пример:
>>> pets=['dog','cat', 'ferret'] >>> 'fox' in pets
False
>>> 'cat' in pets
True
>>> 'me' in 'disappointment'
True
Нет в (not in)
Этот оператор проверяет, НЕ является ли значение членом последовательности.
Пример:
>>> 'pot' not in 'disappointment'
True
Операторы тождественности
Эти операторы проверяют, являются ли операнды одинаковыми (занимают ли они одну и ту же позицию в памяти).
Это (is)
Если операнды тождественны, то вернется True . В противном случае — False . Здесь 2 не является 20 , поэтому вернется False . Но ‘2’ — это то же самое, что и «2» . Разные кавычки не меняют сами объекты, поэтому вернется True .
Пример:
>>> 2 is 20
False
>>> '2' is "2"
True
Это не (is not)
2 — это число, а ‘2’ — строка. Поэтому вернется True .
Пример:
>>> 2 is not '2'
True
Битовые операторы Python
Эти операторы работают над операндами бит за битом.
Бинарное И (&)
Проводит побитовую операцию and над двумя значением. Здесь бинарная 2 — это 10 , а 3 — 11 . Результатом побитового and является 10 — бинарная 2 . Побитовое and над 011 (3) и 100 (4) выдает результат 000 (0).
Пример:
Бинарное ИЛИ (|)
Проводит побитовую операцию or на двух значениях. Здесь or для 10 (2) и 11 (3) возвращает 11 (3).
Пример:
Бинарное ИЛИ НЕТ (^)
Проводит побитовую операцию xor (исключающее или) на двух значениях. Здесь результатом ИЛИ НЕ для 10 (2) и 11 (3) будет 01 (1).
Пример:
Инвертирующий оператор (~)
Он возвращает инвертированные двоичные числа. Другими словами, переворачивает биты. Битовая 2 — это 00000010 . Ее инвертированная версия — 11111101 . Это бинарная -3 . Поэтому результат -3 . Похожим образом ~1 равняется -2 .
Пример:
Еще раз, инвертированная -3 — это 2 .
Бинарный сдвиг влево (<<)
Он сдвигает значение левого операнда на позицию, которая указана справа. Так, бинарная 2 — это 10 . 2 Пример:
Бинарный сдвиг вправо (>>)
Сдвигает значение левого оператора на позицию, указанную справа. Так, бинарная 3 — это 11 . 3 >> 2 сдвинет значение на два положение вправо. Результат — 00 , то есть 0 . 3 >> 1 сдвинет на одну позицию вправо, а результатом будет 01 — бинарная 1 .
Пример:
>>> 3>>2 >>> 3>>1
Выводы
В этом уроке были рассмотрены все 7 типов операторов Python. Для каждого был предложен пример в IDE. Для понимания особенностей работы операторов нужно продолжать с ними работать, использовать в условных конструкциях и объединять.
Операторы в Python от А до Я
Python – весьма перспективный язык программирования, который набирает популярность. Он позволяет создавать функциональный контент совершенно разного направления: от бизнес-софта до развлекательных утилит. Достаточно прост в изучении и освоении с нуля.
Погружаясь в основы Python, нельзя забывать о таком важном моменте, как операторы. Именно о них зайдет речь далее. Вниманию будут представлены логические операторы Python, а также иные их варианты. Эта информация пригодится не только новичкам в сфере разработке, но и опытным программистам.
Немного терминологии
Python является язык общего назначения. Он включает в себя принципы объектно-ориентированного программирования. Поэтому перед тем, как изучать операторы и их нюансы, стоит запомнить несколько ключевых терминов. Без них создать качественное приложение не представляется возможным:
- Алгоритм – своеобразный набор правил и инструкций. Он необходим для обработки функций и выполнения тех или иных задач.
- API – интерфейс прикладного программирования. Включает в себя структурные данные, протоколы и правила, позволяющие быстро разрабатывать ПО, а также налаживать его взаимодействие с разного рода службами.
- Переменные – именованные ячейки памяти. Они резервируются системой с учетом типа используемых данных в исходном коде.
- Константа – постоянное значение. Оно не подлежит никаким корректировкам на протяжении всего жизненного цикла софта.
- Аргумент – значение, которое передается в команду или функцию.
- Объекты – наборы связанных между собой переменных, констант и иных структурных данных, выбираемых и обрабатываемых совместно.
- Классы – перечни связанных объектов. Наделяются общими свойствами.
- Итерация – один проход через команду или функцию в коде.
Отдельно стоит выделить такие понятия как «оператор» и «операнд». Первый термин указывает на объект, умеющий управлять операндами. Для этого задействуются специальные символы и записи (функции). Операнд – объект, которым можно манипулировать через так называемые операторы.
Основные операторы
Оператор в Питоне – символ, который будет отвечать за выполнение операции над одним или сразу несколькими операндами. Последним компонентом будет выступать переменная или значение, с которой требуется проводить дальнейшую работу.
Всего в рассматриваемом ЯП несколько типов операторов:
- арифметические;
- сравнения;
- присваивания;
- логические;
- принадлежности;
- битовые;
- тождественные.
Все перечисленные операторы отвечают за различные операции, проводимые при обработке программного кода. Без них представить даже элементарную программу не получится. Поэтому далее каждый тип рассмотрен более подробно.
Арифметические
Арифметические операторы в Python – самые простые. Данная категория «команд» встречается даже новичкам. С ними знакомятся еще в школьной программе. Они отвечают за элементарные математические действия.
- Сложение (+). Производит сложение значений по обе стороны «команды».
- Вычитание (-). Осуществляет вычитание правой стороны из значения левой в заданном выражении.
- Умножение (*). Перемножает написанное с обеих сторон выражения.
- Деление (/). Делит левый операнд на правый. Тип информации результата – это число с плавающей точкой.
- Возведение в степень (**). Отвечает за возведение первого написанного числа в степень второго у заданной функции.
- Деление без остатка (//). Производит деление согласно установленным математическим правилам. После этого возвращает значение, оставляя только целочисленную часть от полученного частного. Все, что идет после десятичной точки, система отбросит.
- Остаток от деления (%). Эта операция также называется делением по модулю. При ее использовании происходит «раздел» и возврат значения остатка.
Все это должен знать даже школьник. А у разработчика подобная категория манипуляций вообще не вызывает никаких трудностей.
Сравнение
Операторы сравнения отвечают за проверку заданного в приложении равенства. Они указывают, каким является один из операндов:
- Меньше ( <). True присваивается, если показатель слева меньше, чем справа.
- Больше (>). True на выходе будет получено, когда «условия» слева больше правого.
- Меньше или равно ( <=). Выдает на выходе истину, если левая часть меньше или такая же, как правая.
- Больше или равно (>=). True устанавливается, если левая часть записи окажется больше или аналогичной правой.
- Равно (==). В данном случае происходит проверка на непосредственное равенство. Если параметр слева такой же, как справа, на выходе получится true. В противном случае – False.
- Не равно (!=). Оператор, который убран в Питоне 3. Он проверяет, не равен ли параметр слева правому. При успешном выполнении условия приложение выдаст True.
Здесь в основном придется учитывать результат в виде True и False. Перечисленные манипуляции тоже достаточно активно используются в разработке софта.
Присваивание
Операторы присваивания будут отвечать за передачу переменной того или иного значения. Тут нет true или false. Данная категория включает в себя:
- Обычное присваивание (=). Параметр справа передается левой части.
- Сложение и присваивание (+=). Суммирует параметры с обеих сторон и передает результат левой части.
- Вычитание и присваивание (-=). Из правого вычитается «левое». Далее последнему передается соответствующий результат.
- Деление и присваивание (/=).
- Умножение и присваивание (*=).
- Деление по модулю и присваивание (%=).
- Возведение в степень и присваивание (**=).
- Деление с остатком и присваивание (//=).
Последний является одним из самых важных в Питоне.
Логические операторы
Логические операторы выполняют роль своеобразных союзов. Они будут выдавать на выходе True или False. Дают возможность объединения нескольких условий в единое целое:
- И (and). Если написанное с двух сторон оператора – это true, то и все выражение окажется true.
- Или (or). Результат «ложь» выводится тогда, когда два операнда false. В противном случае – true.
- Не (not). Работает с булевыми значениями. True становится False. Обратное соотношение тоже действует.
Других логических операторов в рассматриваемом языке программирования нет.
Принадлежность
Зато есть операторы принадлежности. Они проверяют, является ли значение частью заданной последовательности: списка, кортежа, строки:
- В (in). Осуществляет проверку на принадлежность к последовательности. Возвращает True при соответствии указанному условию.
- Нет в (not in). Проводит проверку на НЕ принадлежность к последовательности.
Других операторов в данной категории нет.
Тождественность
Операторы тождественности проверяют, являются ли операнды одинаковыми. На практике встречаются не слишком часто:
- Это (is). Если тождественность есть, осуществляется возврат True.
- Это нет (is not).
Остается изучить последнюю крупную категорию операторов в Питоне.
Битовые операторы
Осуществляют работу над операндами побитово. Здесь можно увидеть:
- Бинарное И (&). Отвечает за побитовую операцию and.
- Или (|). Побитово проводит or.
- Или нет (^). Это – исключающее или (XOR).
- Инвертирующий оператор (~). Возвращает инвертированные двоичные числа. Будет переворачивать биты.
- Сдвиг влево ( <<). Сдвигает на позицию, указанную справа, левого операнда.
- Сдвиг вправо (>>).
Теперь понятно, какие есть операнды и операции над ними в Питоне. А лучше изучить их на практике помогут компьютерные онлайн курсы.
Когда и зачем использовать оператор := в Python
Совсем недавно Python 3.8 представил оператор присвоения с двоеточием := , аналогичный оператору присвоения = . Использование этого оператора позволяет ускорить и сократить код.
Эта нотация берёт своё начало в математике. При записи уравнений можно написать что-то вроде a=5, a+b=7. Тогда, используя простую алгебраическую операцию, легко вычислить, что b=2. В этом контексте знак равенства означает тождество. Переменные a и b являются постоянными числами, и, хотя их значение неизвестно при инициализации задачи, они существуют и не изменяются.
С другой стороны, в математике существует другая нотация для обозначения отношения ‘x определяется как y’. Запись x := y не означает, что x и y равны друг другу. Здесь x определён как любое значение y. Уравнение скорее одностороннее, чем симметричное, что несколько сложно понять. Эта нотация применяется только для длинных списков определений переменных в узкоспециализированных научных статьях.
Однако в самой последней версии Python 3.8 стало общепринятым использование := или оператора “морж” (он действительно похож на голову лежащего моржа). С его помощью можно определить переменную в границах выражения в контексте программирования.
Так разработчики Python обосновали введение оператора “морж”:
Присвоение имени является важной частью программирования, которая позволяет использовать «описательное» имя вместо более длинного выражения, а также упрощает повторное использование значений. В настоящее время это возможно сделать лишь в виде инструкции, что делает эту операцию недоступной при генерации списков, а также в других выражениях.
Это очень технический способ выразить простую идею, которая вскоре станет более понятна. Давайте посмотрим на оператор “морж” в действии.
Рассмотрим следующий код с функцией f , определённой как f = lambda x : x+2 , которая просто прибавляет 2 к любым введённым данным:
data = [1,2,3,4]
f_data = [y for x in data if (y := f(x)) is not 4]
Получим [3, 5, 6] , поскольку эти результаты функции не равны 4. Это значительно более эффективная реализация, чем её альтернатива, дважды прогоняющая введённые данные через функцию:
f_data = [f(x) for x in data if f(x) is not 4]
Будьте осторожны: поскольку версия 3.8 является совсем новой, некоторые не обновлённые среды могут не поддерживать её.
Давайте рассмотрим другой пример. Есть некий текстовый файл text.txt . Он содержит три строки с буквами от a до i .
abc
def
ghi
Допустим, мы хотим пройти циклом по файлу строка за строкой. Существует несколько способов сделать это. Например, использовать встроенную функцию .readlines() .
for line in open('text.txt','r').readlines():
print(line)
И это неплохое решение — оно делает то, что нужно. Но что, если у вас нет возможности использовать встроенные функции? Не для всех приложений это доступно. Тогда возьмём следующее решение, которое разбивает текст на строки:
for line in open('text.txt','r').read().split('\n'):
print(line)
Оно тоже работает, но составные функции не настолько просты и понятны, как могли бы быть. Запишем с помощью оператора “морж”:
while chunk := open('text.txt').read():
print(chunk)
Здесь мы просто определяем chunk как чтение файла. Просто, коротко и чисто. С другой стороны, запись while chunk = open… была бы неверной, потому что нельзя создавать присвоение переменных при вычислении отдельного выражения.
В качестве следующего примера возьмём заданное выше определение функции f(x), добавлявшей двойку к вводу. Следующая конструкция списка g полностью допустима с использованием оператора “морж”:
g = [y := f(3), y**2, y**3] #содержимое: [5, 25, 125]
Здесь y определяется как f(3) и используется в том же выражении. Нельзя написать что-то вроде g = [y=f(3), …] , поскольку присвоение переменных с использованием = должно выполняться отдельной строкой, а не внутри другого выражения. С помощью стандартного оператора равенства то же самое записывается в две строки:
y = f(3)
g = [y, y**2, y**3]
Теперь использование оператора морж должно быть довольно ясным.
Оператор := может использоваться для присвоения переменных во время вычисления другого выражения.
Поскольку присвоение переменной в форме var = expr должно записываться в отдельной строке, оператор “морж” позволяет сократить пространство, запуская присвоение переменной с выполнением внутри другого выражения, будь то создание списка или чтение файла.
Во многих случаях оператор := аналогичен определению переменных-заполнителей, например for i in range(x): , в котором переменная i инициализируется внутри выражения цикла for. Его можно рассматривать как расширение или обобщение этих “инициализаций скрытых переменных”.
Конечно, оператор “морж” нельзя использовать везде. Следующее недопустимо:
a := 3 # должно быть a=3.
a = b := 4 # должно быть a=b=4
a = (b := 4) # допустимо, но не рекомендуется
Давайте разберём, почему работает выражение a=(b:=4) . Это происходит потому, что b:=4 не только устанавливает b равным четырём, но и возвращает его значение. Поэтому работает и приведённый выше оператор генератора списков ( if y := f(x)) is not 4] ). Он вычисляет b:=4 как выражение, возвращающее значение, в итоге и a , и b имеют значение 4.
Со скобками вокруг первого оператора (a := 3) он выполняется корректно, потому что использование скобок помечает всё внутри них как выражение. Операторы “морж” могут использоваться только внутри других выражений.
Давайте немного выйдет за пределы каноничного Python. Здесь мы рассмотрим некоторые полезные способы использования оператора “морж”, которые могут привести в ярость фанатичных последователей Python.
Рассмотрим функцию exponent , которая увеличивает base по exp .
def exponent(base,exp):
return base**exp
Допустим, нам нужно получить значение четырёх в кубе, сохранив при этом значение степени (3). Воспользуемся оператором “морж”:
exponent(base=4, exp=(storage:=3))
Тройка сохраняется в хранилище переменных, функция выполняется нормально, мы сэкономили строку кода и некоторое время выполнения. При широкомасштабном использовании оператора “морж” эта экономия заметно ощутима.
Оператор “морж” можно использовать даже в операторах if. В примере ниже (placeholder:=x) вычисляется независимо от значения x . Если выход равен четырём, он всё равно сохраняется в плейсхолдере. Обычно такое использование не имеет особой практической ценности, поскольку выполняется избыточное присваивание (что если x!=4 ?), но полезно знать, что такое возможно.
x = 4
if (placeholder:=x) == 4:
print(placeholder) #output: 4
В качестве ещё одного примера кода не в стиле Python, рассмотрим следующую допустимую функцию:
f = lambda x : (m := x+1) + (m**2)
f(3) возвращает 20, потому что (m := x+1) оценивается как 4 и (m**2) оценивается как 16 . Их сумма равна 20, это вычисляется довольной чистым, но при этом несколько хитрым методом.
Как бы то ни было, оператор “морж” — это весьма полезная функция.
Ключевые моменты
- Оператор “морж” записывается так := и представлен в Python 3.8.
- Этот оператор используется только для присваивания переменных внутри других выражений. По крайней мере он помогает сэкономить несколько строк кода, а в некоторых случаях способен значительно ускорить обработку больших данных.
- Операторы “морж” можно использовать везде — от циклов до функций генераторов списка или операторов if для обходного присваивания переменных.
- Менеджеры контекста в Python — выходим за пределы «with open() file»
- 10 популярных проектов GitHub, написанных на Python
- 5 доказательств силы итерируемых объектов в Python
