Охватывающая (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
Импорт
В версии Python 3.12 наконец стало возможным импортировать модули в адекватном для английского языка порядке слов!
🔗 Python tricks
В версии Python 3.12 наконец стало возможным импортировать модули в адекватном для английского языка порядке слов!
🔗 Python tricks
TypeVarTuple
Допустим, мы создаём функцию
TypeVarTuple представляет собой произвольный кортеж потенциально разных типов. Полезно, если функция имеет дело только с первым элементом кортежа, и нам «разрешит» любые оставшиеся типы.
🔗 Python tricks
Допустим, мы создаём функцию
convert_first_int()
, которая возвращает кортеж практически неизменным, только первый элемент приводит к целочисленному типу.TypeVarTuple представляет собой произвольный кортеж потенциально разных типов. Полезно, если функция имеет дело только с первым элементом кортежа, и нам «разрешит» любые оставшиеся типы.
🔗 Python tricks
Pretty Print словаря
Выводить многоуровневые словари с
Но встроенная утилита
🔗 Python tricks
Выводить многоуровневые словари с
print()
— боль: разрывы строк исчезнут, файл станет нечитаемым.Но встроенная утилита
pprint
, выдаст в командной строке «причёсанный» словарь.🔗 Python tricks
set.isdisjoint
Метод isdisjoint() возвращает значение True, если два множества не имеют между собой общих элементов. В противном случае возвращается False. Ты также можешь передавать итерации, такие как список, кортеж, словарь или строку. В этом случае isdisjoint() сначала преобразует итерации в множества. Затем происходит проверка, не являются ли они непересекающимися.
🔗 Python tricks
Метод isdisjoint() возвращает значение True, если два множества не имеют между собой общих элементов. В противном случае возвращается False. Ты также можешь передавать итерации, такие как список, кортеж, словарь или строку. В этом случае isdisjoint() сначала преобразует итерации в множества. Затем происходит проверка, не являются ли они непересекающимися.
🔗 Python tricks
Включение генераторов, сетов
Раньше был эффективный способ генерировать списки — «списковое включение» (List Comprehension).
Оказывается, этому поддаются и другие составные типы — генераторы и сеты.
🔗 Python tricks
Раньше был эффективный способ генерировать списки — «списковое включение» (List Comprehension).
Оказывается, этому поддаются и другие составные типы — генераторы и сеты.
🔗 Python tricks
Оператор match для проверки типа
Теперь освоение новых библиотек у вас точно ускорится.
Порой, трудно понять, какой тип данных возвращает функция или метод. В таких случаях помогают match и встроенные функции приведения к тому или иному типу данных.
🔗 Python tricks
Теперь освоение новых библиотек у вас точно ускорится.
Порой, трудно понять, какой тип данных возвращает функция или метод. В таких случаях помогают match и встроенные функции приведения к тому или иному типу данных.
🔗 Python tricks
MySQL: LEFT JOIN
LEFT JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если нет соответствующих строк в правой таблице, то будут возвращены NULL значения. В этом примере мы объединяем таблицы
🔗 Python tricks
LEFT JOIN возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если нет соответствующих строк в правой таблице, то будут возвращены NULL значения. В этом примере мы объединяем таблицы
customers
и orders
по столбцу id
из customers
и customer id
из orders
, используя LEFT JOIN.🔗 Python tricks
try / except + else + finally
Мастхэв для начинающих питонистов — пара
Более того, добавив
🔗 Python tricks
Мастхэв для начинающих питонистов — пара
try / except
, обработчик исключений. Шикарным дополнением к такому блоку является, на мой взгляд, else: он опишет поведение программы на случай других ошибок, которых может быть немало!Более того, добавив
finally
, вы выполните завершающие работы, например, скомандуете выслать уведомление🔗 Python tricks
Автоматическое добавление ключа словарю
Если создать словарь средствами
🔗 Python tricks
Если создать словарь средствами
collections.defaultdict
, добавить хотя бы один элемент, а затем обратиться к несуществующему ключу.🔗 Python tricks