№27 Инструкции и выражения / для начинающих

Предыдущий урок: 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

Простая операция присваивания

В случае простого присваивания создаются новые переменные, которым присваиваются значения. Их можно менять. Инструкция предоставляет выражение и имя переменной в качестве метки для сохранения значения выражения.

Рассмотрим типы выражений присваивания в Python и посмотрим, как они работают внутри.

Пример 1. С правой стороны — выражение со значением

Это базовая форма присваивания в Python.

Python создаст в памяти строку "Изучение python" и присвоит ей имя test. Узнать адрес в памяти можно с помощью встроенной функции id().


>>> test = "Изучение python"
>>> id(test)
6589040

Номер — это адрес места, где значение хранится в памяти. Дальше несколько интересных вещей, о которых нужно помнить.

  1. Если создать другую строку с тем же значением, Python создаст новый объект и присвоит его другому местоположению в памяти. Это работает в большинстве случаев.
  2. Однако в двух следующих случаях он использует то же место в памяти:
    • Строки без пробелов с менее чем 20 символами;
    • Целые числа от -5 до 255.

Это называется интернированием и делается для сохранения памяти.

Пример 2. С правой стороны — существующая переменная Python

Теперь другой пример инструкции присваивания. С правой стороны находится ранее объявленная переменная python.

Инструкция выше не приведет к выделению нового места в памяти. Обе переменных будут ссылаться на один и тот же объект в памяти. Это как создание псевдонима для существующего объекта. Убедиться в этом можно с помощью все той же функции 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. Чтобы получить максимум от этого урока, повторите все представленные примеры в консоли. Для работы с ранее введенными командами можно использовать стрелку вверх на клавиатуре.

Далее: Комментарии