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

460

Предыдущий урок: 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. Чтобы получить максимум от этого урока, повторите все представленные примеры в консоли. Для работы с ранее введенными командами можно использовать стрелку вверх на клавиатуре.

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

Тест на знание python

Что выведет этот код?
Какой будет результат выполнения этого кода?
Какой будет результат выполнения этого кода?
Если выполнить код ниже, каков будет результат?
Что выведет этот код?
Александр
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ. Пишу на популярные темы: веб-разработка, работа с базами данных, data sciense и другие...