global и nonlocal

Внутри функций Python мы можем использовать значения глобальных переменных, т.е. определенных вне любых функций, на уровне модуля: Однако если в функции есть присваиваниие x после использования переменной x, то возникнет ошибка: Обатите внимание, что присваивание бывает в следующих ситуациях: • x = …• x += …, x -= … и т.п.• for x in …:•…

@ Оператор умножения матриц

А вы знали, что помимо обыденных операторов +, -, *, / и прочих, есть еще операторы @ и @=? Нет, это не про декораторы. Задуманы эти операторы были для умножения матриц и появились в версии Python 3.5. Однако встроенного типа «матрица» в Python нет, и ни один из встроенных типов эти операторы не реализует. Поэтому,…

🔐 Храним секреты правильно

Наверное, каждый когда-то писал в своем коде: Это небезопасно и неудобно. Можно утащить доступы прямо из кода с машины или из репозитория. Можно хранить секретные данные в отдельных файлах конфигурации, передавать через переменные среды, но зачем это, если у современных ОС уже есть встроенные защищенные хранилища. Для хранения секретов и паролей придет на помощь библиотека…

Приоритет операций

В языках программирования и в математике вычисление выражений производится в определенном порядке. Порядок этот задается приоритетом операторов и скобками. Со школы мы знаем, что умножение имеет более высокий приоритет, чем сложение, поэтому в пределах одних скобок сначала будет выполнено умножение, а затем только сложение: 2 * 2 + 2 = 6 Рассмотрим таблицу приоритета операций…

Цепочки сравнений

Распространенная ситуация: проверка того, что переменная находится в заданных пределах. Можно было бы использовать логический оператор and: Однако Python предоставляет нам синтаксическое удобство, которое выглядит более «математичным». Такая запись и короче, и понятнее: В качестве операторов сравнения могут быть любые из списка в любых сочетаниях: Т.е. запись вида a < b > c вполне законна,…