Прокачанный трейсинг ошибок
Классической проблемой новичка становится отладка программы: по трейсбеку (описанию) определить, в чем дело, бывает весьма затруднительно.
Теперь для указания на конкретный объект, вызвавший ошибку, используется строка с несколькими ^ (символ называется “циркумфлекс”). В сниппете выше мы просим поделить на ноль, и конечно, это вызывает ошибку.
🔗 Python tricks
Классической проблемой новичка становится отладка программы: по трейсбеку (описанию) определить, в чем дело, бывает весьма затруднительно.
Теперь для указания на конкретный объект, вызвавший ошибку, используется строка с несколькими ^ (символ называется “циркумфлекс”). В сниппете выше мы просим поделить на ноль, и конечно, это вызывает ошибку.
🔗 Python tricks
__enter__ и_enter__ и
Эти методы используются для создания контекстных менеджеров (то есть объектов, которые можно использовать в блоке with), и позволяют управлять ресурсами, которые нужно освободить после использования.
При входе и выходе из блока with будут выведены соответствующие сообщения.
🔗 Python tricks
Эти методы используются для создания контекстных менеджеров (то есть объектов, которые можно использовать в блоке with), и позволяют управлять ресурсами, которые нужно освободить после использования.
При входе и выходе из блока with будут выведены соответствующие сообщения.
🔗 Python tricks
string.index
Метод index() возвращает индекс подстроки внутри строки (если она найдена). При необходимости ты можешь указать, откуда начинается и где заканчивается поиск. Если подстрока не найдена, возвращается ValueError.
🔗 Python tricks
Метод index() возвращает индекс подстроки внутри строки (если она найдена). При необходимости ты можешь указать, откуда начинается и где заканчивается поиск. Если подстрока не найдена, возвращается ValueError.
🔗 Python tricks
__getitem__ и_getitem__ и
Методы позволяют обращения к объекту по индексу или ключу, как если бы это был список или словарь.
🔗 Python tricks
Методы позволяют обращения к объекту по индексу или ключу, как если бы это был список или словарь.
🔗 Python tricks
__call__
Этот метод позволяет создать так называемые «вызываемые» объекты, то есть их можно вызывать как функции.
🔗 Python tricks
Этот метод позволяет создать так называемые «вызываемые» объекты, то есть их можно вызывать как функции.
🔗 Python tricks
MySQL: LIMIT
Ты можешь ограничить количество записей, возвращаемых по запросу, с помощью оператора LIMIT. Если ты хочешь вернуть пять записей, начиная с третьей, используй ключевое слово «OFFSET».
🔗 Python tricks
Ты можешь ограничить количество записей, возвращаемых по запросу, с помощью оператора LIMIT. Если ты хочешь вернуть пять записей, начиная с третьей, используй ключевое слово «OFFSET».
🔗 Python tricks
string.isdigit
Метод isdigit() возвращает значение True, если все символы в строке являются цифрами. Если нет, он возвращает False. В Python верхний и нижний индексы (обычно написанные с использованием Юникода) также считаются цифровыми символами. Римские цифры, числители валют и дроби считаются числовыми символами, а не цифрами. Чтобы проверить, является ли символ числовым или нет, используй метод isnumeric().
🔗 Python tricks
Метод isdigit() возвращает значение True, если все символы в строке являются цифрами. Если нет, он возвращает False. В Python верхний и нижний индексы (обычно написанные с использованием Юникода) также считаются цифровыми символами. Римские цифры, числители валют и дроби считаются числовыми символами, а не цифрами. Чтобы проверить, является ли символ числовым или нет, используй метод isnumeric().
🔗 Python tricks
__init__
Если у вас есть определенные классы в Python, вы обязательно встретитесь с методом init. Он отвечает за инициализацию экземпляра класса, поэтому именно в нем вы обычно устанавливаете его неотъемлемые атрибуты – например, длина ребра квадрата.
🔗 Python tricks
Если у вас есть определенные классы в Python, вы обязательно встретитесь с методом init. Он отвечает за инициализацию экземпляра класса, поэтому именно в нем вы обычно устанавливаете его неотъемлемые атрибуты – например, длина ребра квадрата.
🔗 Python tricks
Встроенная (Built-in)
Самая широкая область. В ней есть все привычные «персонажи», которые загружаются в область переменных Python при запуске интерпретатора. К примеру, имя файла автоматически становится встроенной переменной, и к ней мы обращаемся с помощью двух подчеркиваний.
🔗 Python tricks
Самая широкая область. В ней есть все привычные «персонажи», которые загружаются в область переменных Python при запуске интерпретатора. К примеру, имя файла автоматически становится встроенной переменной, и к ней мы обращаемся с помощью двух подчеркиваний.
🔗 Python tricks
Охватывающая (Enclosing)
Позволяет «выходить» из локальной о.в. на верхний уровень — но не глобальный. Допустим, у нас есть функция
Такие звери нужны, если вы используете вложенные функции, что в целом случается нечасто. Самый простой пример употребления – цикл внутри цикла, счетчик i и снаружи, и внутри.
🔗 Python tricks
Позволяет «выходить» из локальной о.в. на верхний уровень — но не глобальный. Допустим, у нас есть функция
func1()
, в которой определена еще одна функция func2()
. Оператор nonlocal
позволяет внутренней переменной enclosing
выйти на уровень видимости «верховной» функции.Такие звери нужны, если вы используете вложенные функции, что в целом случается нечасто. Самый простой пример употребления – цикл внутри цикла, счетчик i и снаружи, и внутри.
🔗 Python tricks
Локальная (Local) и глобальная (Global)
Сразу видно глобальную переменную – global. Она удобна в использовании, но не безопасна. При разрастающемся коде легко добиться ситуации, что переменная меняется несколько раз, и это создает лазейки для ее перезаписи всем желающим. Впрочем, за семь лет программирования проблемных ситуаций на этой почве у меня не возникло ни разу. Но информационной безопасностью не занимаюсь.
Заполучить вторую переменную local в сниппете ниже можно только при вызове func().
🔗 Python tricks
Сразу видно глобальную переменную – global. Она удобна в использовании, но не безопасна. При разрастающемся коде легко добиться ситуации, что переменная меняется несколько раз, и это создает лазейки для ее перезаписи всем желающим. Впрочем, за семь лет программирования проблемных ситуаций на этой почве у меня не возникло ни разу. Но информационной безопасностью не занимаюсь.
Заполучить вторую переменную local в сниппете ниже можно только при вызове func().
🔗 Python tricks
Что нового в Python 3.12. Псевдонимы типов
Если мы объявим кортеж
🔗 Python tricks
Если мы объявим кортеж
Point
, который состоит из двух чисел с плавающей запятой, и собираемся создавать его экземпляры, с этим поможет инструкция type.
🔗 Python tricks
Что нового в Python 3.12. Перезапись декоратора
Если у нас есть класс Base c методом
🔗 Python tricks
Если у нас есть класс Base c методом
get_color()
, и в наследном классе GoodChild
мы хотим эту функцию переопределить, то инструкцией @override
это сделать очень просто.🔗 Python tricks
Что нового в Python 3.12. TypedDict для определения типов **kwargs
Если вам доводилось налегать на kwargs (keyword arguments – аргументы c ключевыми словами), то вы помните, что оператор двойная звездочка издавна упаковывает аргументы, переданные по имени, в словарь.
Теперь мы можем использовать
🔗 Python tricks
Если вам доводилось налегать на kwargs (keyword arguments – аргументы c ключевыми словами), то вы помните, что оператор двойная звездочка издавна упаковывает аргументы, переданные по имени, в словарь.
Теперь мы можем использовать
TypedDict
(буквально – словарь с заданными типами значений) для того, чтобы такие аргументы получили большую свободу типов.🔗 Python tricks
MySQL: SELECT
SELECT используется для извлечения данных из базы данных MySQL. Эта операция позволяет выбрать определенные столбцы и строки из таблицы или таблиц базы данных. Обрати внимание на пример. fetchall() извлекает все строки из последнего выполненного оператора.
🔗 Python tricks
SELECT используется для извлечения данных из базы данных MySQL. Эта операция позволяет выбрать определенные столбцы и строки из таблицы или таблиц базы данных. Обрати внимание на пример. fetchall() извлекает все строки из последнего выполненного оператора.
🔗 Python tricks
Что нового в Python 3.12. Порядок слов в инструкции импорта
В крайней версии Python 3.12, наконец, стало возможным импортировать модули в адекватном для английского языка порядке слов.
🔗 Python tricks
В крайней версии Python 3.12, наконец, стало возможным импортировать модули в адекватном для английского языка порядке слов.
🔗 Python tricks
Что нового в Python 3.12. Обратная косая черта в f-строках
До Python 3.12 использовать backslash в интерполируемых строках было нельзя. Теперь же мы смело можем внедрять и разрывы строк (\n), и переносы кареток (\r), и другие подобные символы.
🔗 Python tricks
До Python 3.12 использовать backslash в интерполируемых строках было нельзя. Теперь же мы смело можем внедрять и разрывы строк (\n), и переносы кареток (\r), и другие подобные символы.
🔗 Python tricks
Что нового в Python 3.12. Переиспользование кавычек в f-строках
Теперь напрягать внимание, чтобы вложить в строку объект в кавычках, не нужно. Система поймет, где открывающая, а где — закрывающая кавычка, любое количество раз.
🔗 Python tricks
Теперь напрягать внимание, чтобы вложить в строку объект в кавычках, не нужно. Система поймет, где открывающая, а где — закрывающая кавычка, любое количество раз.
🔗 Python tricks
Что нового в Python 3.12. Улучшенный подсказки для импорта
Если вы забыли подтянуть библиотеку инструкцией
🔗 Python tricks
Если вы забыли подтянуть библиотеку инструкцией
import
, то теперь интерпретатор вежливо подскажет (‘did you forget...’
) и укажет на опечатки в названии подключаемого модуля.🔗 Python tricks
Защита от SQL-инъекций
Безопасники скажут вам, что: внутрь текста (например, в поле анкеты) можно внедрить SQL-запрос и даже дропнуть базу данных. Но не дай бог нам с вами увидеть такое на проде.
Начиная с Python 3.11 мы можем использовать LiteralString во избежание таких уязвимостей.
🔗 Python tricks
Безопасники скажут вам, что: внутрь текста (например, в поле анкеты) можно внедрить SQL-запрос и даже дропнуть базу данных. Но не дай бог нам с вами увидеть такое на проде.
Начиная с Python 3.11 мы можем использовать LiteralString во избежание таких уязвимостей.
🔗 Python tricks