Предположим, что вы требуете от методов или классов, используемых приложением, регистрации в API−интерфейсе для будущей обработки (может быть, API−интерфейс позже будет обращаться к объектам и отвечать на текущие события). Несмотря на то что это могли бы предоставить регистрационные функции, которые выполняли вызову вручную после того, как объекты определены, декораторы сделают ваше решение более элегантным.
Механизм работы:
Поскольку он возвращает сам объект, а не оболочку, он не перехватывает будущие вызовы.
Вывод кода:
Таким образом, регистр хранит ссылки на функции и классы, и их можно вызывать напрямую через регистр.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎1
👍2👎1
В имеющемся коде объект функции обертывается представленной формой исследования, если активен режим 𝚍𝚎𝚋𝚞𝚐 (по умолчанию 𝚃𝚛𝚞𝚎). В противном случае возвращается сама функция, и код выполняется без дополнительных проверок.
Если бы 𝚊𝚐𝚎 был вне диапазона (например, 𝟷𝟻𝟶), то возникло бы исключение 𝚃𝚢𝚙𝚎𝙴𝚛𝚛𝚘𝚛 с сообщением «𝙰𝚛𝚐𝚞𝚖𝚎𝚗𝚝 𝟷 𝚗𝚘𝚝 𝚒𝚗 𝟶..𝟷𝟸𝟶».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
🧩 Как называется параметр ???, который сузит список импортируемых столбцов до заданного списка?
Anonymous Quiz
38%
columns
17%
usecols
19%
col_names
26%
select_columns
👍2👎1
С помощью параметра 𝚞𝚜𝚎𝚌𝚘𝚕𝚜 функции 𝚛𝚎𝚊𝚍_𝚌𝚜𝚟 можно указать список импортируемых библиотекой 𝚙𝚊𝚗𝚍𝚊𝚜 столбцов.
👍2👎1
🧩 Что выведет код?
Anonymous Quiz
23%
('c', 'd')
10%
('a', 'c', 'd')
53%
('a', 'b', 'c', 'd')
15%
Error
👍2👎1
Из
«𝚌𝚘𝚍𝚎𝚘𝚋𝚓𝚎𝚌𝚝.𝚌𝚘_𝚟𝚊𝚛𝚗𝚊𝚖𝚎𝚜: кортеж, содержащий имена локальных переменных в функции (начиная с имен параметров)».
В 𝚏𝚞𝚗𝚌() определены:
− Аргументы: 𝚊, 𝚋
− Локальные переменные: 𝚌, 𝚍
𝚌𝚘𝚍𝚎.𝚌𝚘_𝚟𝚊𝚛𝚗𝚊𝚖𝚎𝚜 — все имена локальных переменных. Этот атрибут возвращает кортеж всех локальных переменных функции, включая аргументы и переменные, определенные внутри функции.
👍2👎1
👍2👎2
Марк Лутц «Изучаем Python», глава 𝟹𝟿:
«Аннотации функций ... можно бы предложить альтернативу — аргументы декоратора, используемые в примере для задания проверок вложения в диапазон».
Декоратор @𝚛𝚊𝚗𝚐𝚎𝚝𝚎𝚜𝚝(𝚊=(𝟷, 𝟻), 𝚌=(𝟶.𝟶, 𝟷.𝟶)) принимает аргументы для проверки диапазонов:
В данной реализации декоратор является «пустым» — он принимает аргументы, но не выполняет никаких проверок, просто возвращает исходную функцию без изменений.
При вызове 𝚏𝚞𝚗𝚌(𝟸, 𝟹, 𝟶.𝟻) функция выполняется с параметрами:
− 𝚊 = 𝟸
− 𝚋 = 𝟹
− 𝚌 = 𝟶.𝟻
Функция вычисляет и выводит результат: 𝟸 + 𝟹 + 𝟶.𝟻 = 𝟻.𝟻.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1👎1
🧩 Что делает флаг -O в команде 'python -O main.py'?
Anonymous Quiz
8%
Удаляет все комментарии и docstrings
42%
Включает режим отладки с дополнительными проверками
26%
Удаляет операторы assert и код, зависящий от __debug__
24%
Такого флага не существует
👍2👎1
Флаг −𝙾 в команде «𝚙𝚢𝚝𝚑𝚘𝚗 −𝙾 𝚖𝚊𝚒𝚗.𝚙𝚢» выполняет следующие действия:
Это позволяет создавать оптимизированный байт−код без отладочной информации и проверок 𝚊𝚜𝚜𝚎𝚛𝚝.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
🧩 Что выведет код?
Anonymous Quiz
23%
<class 'type'>
60%
<class '__main__.MyClass'>
11%
class
7%
Error
👍2👎1
𝚝𝚢𝚙𝚎(𝙼𝚢𝙲𝚕𝚊𝚜𝚜) возвращает <𝚌𝚕𝚊𝚜𝚜 '𝚝𝚢𝚙𝚎'> — это показывает, что сам класс 𝙼𝚢𝙲𝚕𝚊𝚜𝚜 является экземпляром класса 𝚝𝚢𝚙𝚎
Марк Лутц «Изучаем Python», глава 40:
«Классы представляют собой экземпляры класса 𝚝𝚢𝚙𝚎». Это означает, что 𝚝𝚢𝚙𝚎 является не только встроенным классом, но и метаклассом: классом, экземплярами которого являются другие классы.
Фактически 𝚖𝚎𝚝𝚊𝚌𝚕𝚊𝚜𝚜 — это просто фабрика классов, и благодаря тому, что классы являются экземплярами класса 𝚝𝚢𝚙𝚎, возможно создание собственных подклассов 𝚝𝚢𝚙𝚎 (называемых метаклассами) для генерации классов особого вида.
👍2👎1
👍2👎1
− 𝚌𝚕𝚊𝚜𝚜𝚗𝚊𝚖𝚎: строка «𝙴𝚐𝚐𝚜»
− 𝚜𝚞𝚙𝚎𝚛𝚜: кортеж родительских классов (<𝚌𝚕𝚊𝚜𝚜 '𝚘𝚋𝚓𝚎𝚌𝚝'>,)
− 𝚌𝚕𝚊𝚜𝚜𝚍𝚒𝚌𝚝: словарь атрибутов класса, содержащий '__𝚖𝚘𝚍𝚞𝚕𝚎__', '__𝚚𝚞𝚊𝚕𝚗𝚊𝚖𝚎__', '𝚍𝚊𝚝𝚊': 𝟸 и '𝚖𝚎𝚝𝚑'
Функция 𝙼𝚎𝚝𝚊𝙵𝚞𝚗𝚌 является «простейшей (и вполне законной) версией метакласса, которая позволяет перехватить процесс создания класса и модифицировать его атрибуты перед созданием. В данном случае метакласс изменяет значение атрибута 𝚍𝚊𝚝𝚊 с 𝟸 на 𝟷, демонстрируя возможность динамической модификации класса во время его создания.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1