Предыдущий урок: Try…Except
Этот материал посвящен инструкциям и выражениям в Python, а также отличиям между ними. Также речь пойдет об инструкциях, занимающих несколько строк, и отступах в Python. Попробуем ответить на вопрос: «Почему отступы так важны в Python?»
Инструкции в Python
Что такое инструкция?
Инструкция в Python — это логическая инструкция, которую интерпретатор Python может прочесть и выполнить. Она может являться выражением или оператором присваивания в Python.
Присваивание — фундаментальный элемент этого языка. Он определяет способ создания и сохранения объектов с помощью выражений.
Что такое выражение?
Выражение — один из типов инструкции, который содержит логическую последовательность чисел, строк, объектов и операторов python. Значение и переменная являются выражениями сами по себе.
С помощью выражений можно выполнять такие операции, как сложение, вычитание, конкатенация и другие. Они также могут представлять собой вызовы функций, которые возвращают результат.
# Использование арифметических выражений
>>> ((20 + 2) * 10 / 5 - 20)
24.0
# Использование функций в выражении
>>> pow(2, 10)
1024
# Использование eval в выражении
>>> eval("2.5+2.5")
5.0
Простая операция присваивания
В случае простого присваивания создаются новые переменные, которым присваиваются значения. Их можно менять. Инструкция предоставляет выражение и имя переменной в качестве метки для сохранения значения выражения.
# Синтаксис
variable = expression
Рассмотрим типы выражений присваивания в Python и посмотрим, как они работают внутри.
Пример 1. С правой стороны — выражение со значением
Это базовая форма присваивания в Python.
>>> test = "Изучение python"
Python создаст в памяти строку "Изучение python"
и присвоит ей имя test
. Узнать адрес в памяти можно с помощью встроенной функции id()
.
>>> test = "Изучение python"
>>> id(test)
6589040
Номер — это адрес места, где значение хранится в памяти. Дальше несколько интересных вещей, о которых нужно помнить.
- Если создать другую строку с тем же значением, Python создаст новый объект и присвоит его другому местоположению в памяти. Это работает в большинстве случаев.
- Однако в двух следующих случаях он использует то же место в памяти:
- Строки без пробелов с менее чем 20 символами;
- Целые числа от -5 до 255.
Это называется интернированием и делается для сохранения памяти.
Пример 2. С правой стороны — существующая переменная Python
Теперь другой пример инструкции присваивания. С правой стороны находится ранее объявленная переменная python.
>>> another_test = test
Инструкция выше не приведет к выделению нового места в памяти. Обе переменных будут ссылаться на один и тот же объект в памяти. Это как создание псевдонима для существующего объекта. Убедиться в этом можно с помощью все той же функции id()
.
>>> test = "Изучение python"
>>> id(test)
6589424
>>> another_test = test
>>> id(another_test)
6589424
Пример 3. С правой стороны — операция
В случае такой инструкции результат зависит от исхода операции. Возьмем такой пример.
>>> test = 2 * 2 / 4
>>> print(test)
1.0
>>> type(test)
В примере выше присваивание приведет к созданию переменной типа float
. А в этом — к появлению переменной типа int
.
>>> test = 3 * 3
>>> print(test)
9
>>> type(test)
Дополненная инструкция присваивания
Арифметические операторы можно объединять для формирования инструкций дополненного присваивания.
Рассмотрим такой пример: x += y
. Он является аналогичным этой инструкции — x = x + y
.
Следующий пример с добавлением новых элементов в кортеж чуть яснее демонстрирует принцип.
>>> my_tuple = (5, 10, 20)
>>> my_tuple += (40, 80,)
>>> print(my_tuple)
(5, 10, 20, 40, 80)
Следующий пример — список гласных. В нем в список добавляются недостающие значения.
>>> list_vowels = ['a','e','i']
>>> list_vowels += ['o', 'u',]
>>> print(list_vowels)
['a', 'e', 'i', 'o', 'u']
Инструкция в несколько строк
Каждая инструкция в Python заканчивается символом новой строки. Но это поведение можно расширить на несколько строк с помощью символа продолжения строки \
.
В Python есть два варианта работы с инструкциями, занимающими несколько строк.
1. Явное продолжение строки
Когда сразу используется символ продолжения строки \
для разбития инструкции на несколько строчек.
# Инициализация списка с помощью многострочной инструкции
>>> my_list = [1, \
... 2, 3\
... ,4,5 \
... ]
>>> print(my_list)
[1, 2, 3, 4, 5]
# Вычислить выражение, используя многострочную инструкцию
>>> eval ( \
... " 2.5 \
... + \
... 3.5")
6.0
2. Неявное продолжение строки
Неявное продолжение строки работает в тех случаях, когда инструкция разбивается с помощью круглых (), квадратных [] или фигурных {} скобок. В таком случае инструкцию нужно заключить внутрь скобок для переноса.
>>> result = (10 + 100
... * 5 - 5
... / 100 + 10
... )
>>> print(result)
519.95
>>> subjects = [
... 'Метематика',
... 'Английский',
... 'Химия'
... ]
>>> print(subjects)
['Метематика', 'Английский', 'Химия']
>>> type(subjects)
Отступы в Python
Большая часть высокоуровневых языков программирования, таких как C, C++, C# используют фигурные скобки для выделения блоков кода. Python делает это с помощью отступов.
Блок кода, представляющий тело функции или цикл, начинается с отступа и заканчивается первой строкой без отступа.
Сколько места занимает один отступ
Согласно правилам стиля Python (PEP8), размер отступа — 4 символа. Однако у Google есть собственные правила, ограничивающие этот размер 2 символами. Так что можно руководствоваться и собственным стилем, но лучше следовать PEP8.
Почему отступы так важны в Python?
В большинстве языков программирования отступы используются для улучшения читабельности, но добавлять их необязательно. Но в Python их обязательно нужно использовать. Обычно каждую строку предваряет отступ в 4 символа для одного блока кода.
В примерах прошлых разделов были блоки без отступов. Однако в более сложных выражениях без них не обойтись.
def demo_routine(num):
print('Демо функция')
if num % 2 == 0:
return True
else:
return False
num = int(input('Введи число:'))
if demo_routine(num) is True:
print(num, 'четное число')
else:
print(num, 'нечетное число')
Также стоит рассмотреть пример, когда ненужный отступ вызывает ошибку.
>>> 6*5-10
File "", line 1
6*5-10
^
IndentationError: unexpected indent
Выводы
Если вы планируете стать профессиональным программистом, который верит в понятие чистого кода, тогда важно знать о выражениях, инструкциях и отступах в Python. Чтобы получить максимум от этого урока, повторите все представленные примеры в консоли. Для работы с ранее введенными командами можно использовать стрелку вверх на клавиатуре.
Далее: Комментарии
Появились вопросы? Задайте на Яндекс Кью
У блога есть сообщество на Кью >> Python Q <<. Там я и другие участники отвечаем на вопросы по python, программированию и контенту сайта.
Обучение Python и Data Science
Вам помогла эта статья? Поделитесь в соцсетях или блоге. Репосты помогают сайту развиться.