Опубликован: 22.12.2005 | Уровень: для всех | Доступ: платный
Лекция 1:

Введение в программирование на языке Python

Лекция 1: 12345678 || Лекция 2 >

Выражения

В современных языках программирования принято производить большую часть обработки данных в выражениях. Синтаксис выражений у многих языков программирования примерно одинаков. Синтаксис выражений Python не удивит программиста чем-то новым. (Разве что цепочечные сравнения могут приятно порадовать.)

Приоритет операций показан в нижеследующей таблице (в порядке увеличения). Для унарных операций x обозначает операнд. Ассоциативность операций в Python - слева-направо, за исключением операции возведения в степень ( ** ), которая ассоциативна справа налево.

Операция Название
lambda лямбда-выражение
or логическое ИЛИ
and логическое И
not x логическое НЕ
in, not in проверка принадлежности
is, is not проверка идентичности
<,<=,>,>=,!=,== сравнения
| побитовое ИЛИ
^ побитовое исключающее ИЛИ
& побитовое И
<<, >> побитовые сдвиги
+, - сложение и вычитание
*, /, % умножение, деление, остаток
+x, -x унарный плюс и смена знака
~x побитовое НЕ
** возведение в степень
x.атрибут ссылка на атрибут
x[индекс] взятие элемента по индексу
x[от:до] выделение среза (от и до)
f(аргумент,...) вызов функции
( ... ) скобки или кортеж
[ ... ] список или списковое включение
{кл:зн, ...} словарь пар ключ-значение
`выражения` преобразование к строке (repr)

Таким образом, порядок вычислений операндов определяется такими правилами:

  1. Операнд слева вычисляется раньше операнда справа во всех бинарных операциях, кроме возведения в степень.
  2. Цепочка сравнений вида a < b < c ... y < z фактически равносильна: (а < b) and (b < c) and ... and (y < z).
  3. Перед фактическим выполнением операции вычисляются нужные для нее операнды. В большинстве бинарных операций предварительно вычисляются оба операнда (сначала левый), но операции or и and, а также цепочки сравнений вычисляют такое количество операндов, которое достаточно для получения результата. В невычисленной части выражения в таком случае могут даже быть неопределенные имена. Это важно учитывать, если используются функции с побочными эффектами.
  4. Аргументы функций, выражения для списков, кортежей, словарей и т.п. вычисляются слева-направо, в порядке следования в выражении.

В случае неясности приоритетов желательно применять скобки. Несмотря на то, что одни и те же символы могут использоваться для разных операций, приоритеты операций не меняются. Так, % имеет тот же приоритет, что и *, а потому в следующем примере скобки просто необходимы, чтобы операция умножения произошла перед операцией форматирования:

print "%i" % (i*j)

Выражения могут фигурировать во многих операторах Python и даже как самостоятельный оператор. У выражения всегда есть результат, хотя в некоторых случаях (когда выражение вычисляется ради побочных эффектов) этот результат может быть "ничем" - None.

Очень часто выражения стоят в правой части оператора присваивания или расширенного присваивания. В Python (в отличие, скажем, от C) нет операции присваивания, поэтому синтаксически перед знаком = могут стоять только идентификатор, индекс, срез, доступ к атрибуту или кортеж (список) из перечисленного. (Подробности в документации).

Лекция 1: 12345678 || Лекция 2 >
Сергей Крупко
Сергей Крупко

Добрый день.

Я сейчас прохожу курс  повышения квалификации  - "Профессиональное веб-программирование". Мне нужно получить диплом по этому курсу. Я так полагаю нужно его оплатить чтобы получить диплом о повышении квалификации. Как мне оплатить этот курс?

 

Павел Ялганов
Павел Ялганов

Скажите экзамен тоже будет ввиде теста? или там будет какое то практическое интересное задание?

Василий Олешицкий
Василий Олешицкий
Россия, Курск