Чем операнд отличается от оператора
Учимся программировать на Python
Python - один из самых востребованных языков программирования. Подпишитесь на бесплатную рассылку и получайте статьи и видео о программировании на Python. Подробнее... |
В мире программирования есть довольно много разных направлений, которые очень сильно отличаются друг от друга. Например, программист микроконтроллеров не сможет разработать конфигурацию 1С, а программист 1С может не иметь понятия о принципах обмена данными через интерфейс RS-232. И при этом оба они могут быть очень классными специалистами в своей области.
Однако есть базовые вещи - азы программирования, которые должны знать все программисты, независимо от рода деятельности. К таким вещам относятся, например, понятия о выражениях, операндах и операторах.
Знаете ли вы, чем отличается операнд от оператора? Я вот когда-то не знал и постоянно путался с этими терминами. Для меня, как говорится, был “хрен редьки не слаще”. Но однажды каждый программист при переходе от любителя к профессионалу должен взять себя в руки и разобраться с этими базовыми понятиями. А я постараюсь в этом помочь.
ПРИМЕЧАНИЕ: В видео я кратко рассказал о сдвиге. Если хотите подробнее, то можете посмотреть здесь: сдвиг влево, сдвиг вправо.
Итак, в общих чертах о выражениях, операндах и операторах я рассказал здесь. Повторяться не буду. А в этой статье расскажу только о некоторых особенностях этого вопроса, имеющих отношение к языку Python.
Ну, во первых, в отличие от строго типизированных языков, таких как Паскаль, в Python при составлении выражений типы операндов не обязательно должны совпадать.
А во-вторых, у всех языков программирования практически всегда операторы сложения, вычитания, деления и умножения выглядят одинаково, а вот с остальными могут быть (и есть) отличия.
А вот обещанное отличие операнда от оператора:
Операторы
В Python используются следующие операторы:
+ - * ** / // % < > <= >= == != << >> & | ^ ~
Причём, как и в большинстве других языков программирования, их действие может зависеть от типа данных операндов, над которыми выполняется операция.
Например, оператор + складывает два числа. Но он также может быть унарным оператором, и оператором конкатенации (сложения) строк.
Ну а теперь подробнее о назначении приведённых выше операторов. Со строками будем разбираться отдельно, но в случае использования с числовыми типами эти операторы выполняют следующие действия:
Операция | Результат | Примечания |
x + y |
Сумма х и у | |
x - y |
Разность х и у | |
x * y |
Произведение х на у | |
x ** y |
х в степени у | |
x / y |
Деление х на у | |
x // y |
Целочисленное деление х на у | Результат представляет собой целое число, хотя тип результата не обязательно int. Результат всегда округляется до минус бесконечности: 1//2 равно 0, (-1)//2 равно -1, 1//(-2) равно -1 и (-1)//(-2) равно 0. |
х % у |
Остаток от деления х/у | Не для комплексных чисел |
-x |
Отрицательное значение х | Равносильно -1 * х |
+x |
Не изменяет х | |
х | y |
Поразрядное ИЛИ между х и у | |
x ^ y |
Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ между х и у | |
x & y |
Поразрядное И между х и у | |
х << n |
Сдвиг влево значения х на n битов | Сдвиг отрицательных чисел является неправильным и приводит к увеличению ошибки значения. Сдвиг влево на n бит эквивалентен умножению на число 2 в степень n без проверки переполнения. |
x >> n |
Сдвиг вправо значения х на n битов | Сдвиг отрицательных чисел является неправильным и приводит к увеличению ошибки значения. Сдвиг вправо на n бит эквивалентен делению на число 2 в степень n без проверки переполнения. |
~x |
Инверсия х | |
< |
Операторы сравнения. Соответственно “меньше”, “больше”, “меньше или равно”, “больше или равно”, “равно”, “не равно”. |
Есть ещё такая штука, как приоритет операторов. Например, в выражении
x + y * z
Сначала будет выполнена операция y * z
, а потом к х
будет добавлен результат этой операции. Обычно в языках программирования на математические операции действуют правила приоритета, аналогичные принятым в математике. Но если вы не уверены, то лучше заключать в круглые скобки выражение, которое должно быть вычислено первым.
Например, если вы не знаете, как в Python будет вычислено это выражение:
x / y // z
то есть какая операция будет вычислена первой - обычного деления или целочисленного, а вы хотите, чтобы сначала было выполнено целочисленное, то лучше сделать так:
x / (y // z)
Лично я никогда не заморачиваюсь запоминанием приоритетов операторов, потому что в разных языках они могут отличаться (а мне приходится работать с разными языками). Проще добавить скобки в выражение - так будет наверняка.
Есть в Python и другие операторы. А также знаки, похожие на операторы, но не являющиеся таковыми. Но о них мы поговорим в следующих статьях.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Все способы изучить Python
Каждый раз, изучая какую-то новую науку, мы задаёмся вопросом - где взять обучающие материалы. Конечно, сегодня нам помогает в этом Интернет. Но иногда на поиски уходит очень много времени, а нужного результата мы не получаем... Собрал для вас кучу полезных ссылок для изучения Python. не благодарите ))) Подробнее... |