Что происходит, когда у нас есть избыточные ключи в ChainMap?
Возможно, что 2 словаря содержат один и тот же ключ.
Обратите внимание, что red не повторяется, он печатается только один раз.
Подписывайтесь на канал 👉@pythonofff
Возможно, что 2 словаря содержат один и тот же ключ.
Обратите внимание, что red не повторяется, он печатается только один раз.
Подписывайтесь на канал 👉@pythonofff
👍2
Выводим вложенные словари и списки
При выводе вложенных словарей и списков с помощью обычного print() мы получаем всё в одну строчку и в неразборчивом виде.
Но в стандартной библиотеке есть модуль pprint, который поможет вывести подобное дело в красивом формате — достаточно в коде заменить print() на pprint.pprint().
Из интересных аргументов есть depth, отвечающий за глубину вложенности при выводе, а также width, который отвечает за ширину вывода в консоли.
Подписывайтесь на канал 👉@pythonofff
При выводе вложенных словарей и списков с помощью обычного print() мы получаем всё в одну строчку и в неразборчивом виде.
Но в стандартной библиотеке есть модуль pprint, который поможет вывести подобное дело в красивом формате — достаточно в коде заменить print() на pprint.pprint().
Из интересных аргументов есть depth, отвечающий за глубину вложенности при выводе, а также width, который отвечает за ширину вывода в консоли.
Подписывайтесь на канал 👉@pythonofff
👍3
Как использовать функцию pow() в Python
Python также имеет встроенную функцию pow(), которая возводит число в указанную степень. Синтаксис данной функции выглядит следующим образом:
pow(base, exponent)
Приведенный выше код интерпретируется как baseexponent, то есть число base в степени exponent.
Функция pow() принимает два аргумента: число (известное как основание или base) и степень, в которую число должно быть возведено (показатель степени — exponent).
Подписывайтесь на канал 👉@pythonofff
Python также имеет встроенную функцию pow(), которая возводит число в указанную степень. Синтаксис данной функции выглядит следующим образом:
pow(base, exponent)
Приведенный выше код интерпретируется как baseexponent, то есть число base в степени exponent.
Функция pow() принимает два аргумента: число (известное как основание или base) и степень, в которую число должно быть возведено (показатель степени — exponent).
Подписывайтесь на канал 👉@pythonofff
👍3
Что выведет код и почему?
Подписывайтесь на канал 👉@pythonofff
def make_counters():
counters = []
for i in range(3):
def counter():
return i
counters.append(counter)
return counters
funcs = make_counters()
print([f() for f in funcs])
Подписывайтесь на канал 👉@pythonofff
👍3
Превращаем текст в числа
Пакет Numerizer преобразует обычный текст в числа. То есть, например, из строки "forty two" можно получить число "42".
Кроме функции numerize особо выделить нечего, но можете посмотреть https://github.com/jaidevd/numerizer
Подписывайтесь на канал 👉@pythonofff
Пакет Numerizer преобразует обычный текст в числа. То есть, например, из строки "forty two" можно получить число "42".
Кроме функции numerize особо выделить нечего, но можете посмотреть https://github.com/jaidevd/numerizer
Подписывайтесь на канал 👉@pythonofff
👍4❤1
Методы PurePath
PurePath().is_absolute() проверяет, является ли ваш путь абсолютным
Обратите внимание, что абсолютный путь состоит из корня и имени диска. В этом случае PurePath() не позволяет нам узнать имя диска.
Если вы используете PureWindowsPath(), вы можете представить абсолютный путь, содержащий имя диска, например PureWindowsPath('c:/Program Files').
Подписывайтесь на канал 👉@pythonofff
PurePath().is_absolute() проверяет, является ли ваш путь абсолютным
Обратите внимание, что абсолютный путь состоит из корня и имени диска. В этом случае PurePath() не позволяет нам узнать имя диска.
Если вы используете PureWindowsPath(), вы можете представить абсолютный путь, содержащий имя диска, например PureWindowsPath('c:/Program Files').
Подписывайтесь на канал 👉@pythonofff
👍1
Деструкторы
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода __del__, который вызовется автоматически при удалении объекта.
Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
Подписывайтесь на канал 👉@pythonofff
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода __del__, который вызовется автоматически при удалении объекта.
Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
Подписывайтесь на канал 👉@pythonofff
👍3
Получаем атрибуты объекта
Функция vars() возвращает все атрибуты переданного параметра, в качестве которого может быть почти что угодно: модуль, класс, экземпляр и т. д.
Проще говоря, vars() возвращает словарь, который хранится в атрибуте __dict__ у переданного объекта.
А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и locals()
Подписывайтесь на канал 👉@pythonofff
Функция vars() возвращает все атрибуты переданного параметра, в качестве которого может быть почти что угодно: модуль, класс, экземпляр и т. д.
Проще говоря, vars() возвращает словарь, который хранится в атрибуте __dict__ у переданного объекта.
А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и locals()
Подписывайтесь на канал 👉@pythonofff
👍4
Как использовать Concrete Paths
Path() является дочерним классом PurePath(). Он обеспечивает операции обработки с возможностью выполнения операций записи.
Когда вы создаете экземпляр Path(), он создает два класса для обработки путей Windows и путей, отличных от Windows. Как и PurePath(), Path() также создает общий объект пути «agnostic path», независимо от операционной системы, в которой вы работаете.
Подписывайтесь на канал 👉@pythonofff
Path() является дочерним классом PurePath(). Он обеспечивает операции обработки с возможностью выполнения операций записи.
Когда вы создаете экземпляр Path(), он создает два класса для обработки путей Windows и путей, отличных от Windows. Как и PurePath(), Path() также создает общий объект пути «agnostic path», независимо от операционной системы, в которой вы работаете.
Подписывайтесь на канал 👉@pythonofff
👍2
Получение списка имен в объектах
С помощью функции dir() можно получить отсортированный список имен атрибутов и методов, доступных в локальной области. Либо если в функцию передать какой-либо объект dir(object), она вернет список всех имен атрибутов и методов переданного объекта.
Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции dir(), можно определить в классе метод __dir__().
Для классов, в которых не определен dir__(), функция соберет информацию по атрибутам из __dict.
Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию help() по нужному атрибуту для получения документации.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
С помощью функции dir() можно получить отсортированный список имен атрибутов и методов, доступных в локальной области. Либо если в функцию передать какой-либо объект dir(object), она вернет список всех имен атрибутов и методов переданного объекта.
Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции dir(), можно определить в классе метод __dir__().
Для классов, в которых не определен dir__(), функция соберет информацию по атрибутам из __dict.
Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию help() по нужному атрибуту для получения документации.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
PosixPath()
Это дочерний класс Path() и PurePosixPath(), реализованный для обработки и управления путями файловой системы, отличной от Windows.
Вы получите сообщение об ошибке, если создадите экземпляр PosixPath() на компьютере с Windows, потому что нельзя выполнять системные вызовы, работая в другой операционной системе.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Это дочерний класс Path() и PurePosixPath(), реализованный для обработки и управления путями файловой системы, отличной от Windows.
Вы получите сообщение об ошибке, если создадите экземпляр PosixPath() на компьютере с Windows, потому что нельзя выполнять системные вызовы, работая в другой операционной системе.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Генерация капчи
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль captcha и Pillow, который используется для создание изображений в captcha.
Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения ImageCaptcha, на который будет нанесен текст. После чего вызываем метод write с заданным текстом и именем файла, в который будет записано изображение.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль captcha и Pillow, который используется для создание изображений в captcha.
Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения ImageCaptcha, на который будет нанесен текст. После чего вызываем метод write с заданным текстом и именем файла, в который будет записано изображение.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Получаем исходный код объекта
Встроенный модуль inspect помогает разработчикам исследовать уже написанные программы.
Сегодня поговорим только про getsource(), который возвращает весь исходный код функции, класса или модуля в виде строки.
В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Встроенный модуль inspect помогает разработчикам исследовать уже написанные программы.
Сегодня поговорим только про getsource(), который возвращает весь исходный код функции, класса или модуля в виде строки.
В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
Свойства Concrete Paths
Поскольку Concrete Paths является подклассом PurePath, мы можем использовать все свойства PurePath().
Это означает, что мы можем использовать, например, свойство .with_suffix для добавления суффикса к конкретному пути.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Поскольку Concrete Paths является подклассом PurePath, мы можем использовать все свойства PurePath().
Это означает, что мы можем использовать, например, свойство .with_suffix для добавления суффикса к конкретному пути.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Проверяем тип объекта
Раз уж в предыдущем посте затронули модуль inspect, то давайте еще поговорим про некоторые его возможности.
Функции ismodule(), isclass(), ismethod() и isfunction() проверяют переданный объект на то, является ли он модулем, классом, методом или функцией соответственно.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Раз уж в предыдущем посте затронули модуль inspect, то давайте еще поговорим про некоторые его возможности.
Функции ismodule(), isclass(), ismethod() и isfunction() проверяют переданный объект на то, является ли он модулем, классом, методом или функцией соответственно.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Path().mkdir()
Согласно официальной документации, метод .mkdir() принимает три аргумента. Мы пока сосредоточимся только на parents и exists_ok.
Оба аргумента имеют значение False по умолчанию. Аргумент parents вызывает ошибку FileNotFound в случае отсутствия родителя, тогда как exists_ok вызывает ошибку FileExists, если данный каталог уже существует.
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Согласно официальной документации, метод .mkdir() принимает три аргумента. Мы пока сосредоточимся только на parents и exists_ok.
Оба аргумента имеют значение False по умолчанию. Аргумент parents вызывает ошибку FileNotFound в случае отсутствия родителя, тогда как exists_ok вызывает ошибку FileExists, если данный каталог уже существует.
Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🐍 Ловушка с аргументами по умолчанию
Посмотрите на код ниже. Как вы думаете, что выведет второй вызов функции?
Варианты ответа:
1. [1] и [2]
2. [1] и [1, 2]
3. Ошибка SyntaxError
⬇️ Правильный ответ и объяснение ⬇️
Правильный ответ: 2 — [1] и [1, 2]
Почему?
В Python аргументы по умолчанию вычисляются один раз при определении функции, а не при каждом вызове. Список target создается один раз и сохраняет свое состояние между вызовами.
✅ Как исправить?
Используйте None в качестве значения по умолчанию:
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Посмотрите на код ниже. Как вы думаете, что выведет второй вызов функции?
def append_to(num, target=[]):
target.append(num)
return target
print(append_to(1))
print(append_to(2))
Варианты ответа:
1. [1] и [2]
2. [1] и [1, 2]
3. Ошибка SyntaxError
⬇️ Правильный ответ и объяснение ⬇️
Почему?
В Python аргументы по умолчанию вычисляются один раз при определении функции, а не при каждом вызове. Список target создается один раз и сохраняет свое состояние между вызовами.
✅ Как исправить?
Используйте None в качестве значения по умолчанию:
def append_to(num, target=None):
if target is None:
target = []
target.append(num)
return target
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
👍7
⚡ Объединяем словари в Python 3.9+
Раньше для объединения двух словарей нам приходилось использовать метод
Начиная с Python 3.9, появился оператор объединения |. Это делает код намного чище!
Пример:
💡При совпадении ключей (в примере
Сохраняй, чтобы писать чистый код! 💾
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
Раньше для объединения двух словарей нам приходилось использовать метод
.update() или распаковку **kwargs.Начиная с Python 3.9, появился оператор объединения |. Это делает код намного чище!
Пример:
x = {"key1": "value1 from x", "key2": "value2 from x"}
y = {"key2": "value2 from y", "key3": "value3 from y"}
# Старый способ (до 3.9)
z = {**x, **y}
# Новый способ (Python 3.9+)
z = x | y
print(z)
# {'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'}
💡При совпадении ключей (в примере
key2), побеждает значение из последнего словаря (справа от оператора).Сохраняй, чтобы писать чистый код! 💾
📲 Мы в MAX
Подписывайтесь на канал 👉@pythonofff
👍3