Python: задачки и вопросы
前往频道在 Telegram
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media
显示更多7 127
订阅者
无数据24 小时
+67 天
无数据30 天
帖子存档
Чтобы получить атрибут по имени name из модуля М, мы можем использовать уточнение с помощью атрибута или индекс в словаре атрибутов модуля, доступном через встроенный атрибут
__diсt__. Python также экспортирует список всех загруженных модулей в виде словаря sys.modules. Из-за этого все перечисленные далее выражения попадают на тот же самый атрибут и объект:
М.name # Уточнение объекта атрибутом
М.diсt['name'] # Ручная индексация словаря пространства имен
sys.modules[’M’].name # Ручная индексация таблицы загруженных модулейКакой из способов вызова атрибута name модуля M не сработает?
Имя модуля в операторе
import или from является жестко закодированным именем переменной. Тем не менее, иногда ваша программа будет получать имя модуля, подлежащего импортированию, в виде строки во время выполнения — например, в результате выбора, производимого в графическом пользовательском интерфейсе, или разбора XML-документа. К сожалению, вы не можете использовать операторы import напрямую для загрузки модуля с именем, заданным как строка — Python ожидает имя переменной, которое берется буквально и не оценивается, а не строку или выражение.
>>> import 'json'
... SyntaxError: invalid syntax
Простое присваивание имени переменной соответствующей строки тоже не поможет:
>>> x = 'json'
>>> import x
... ModuleNotFoundError: No module named 'x'
Чтобы импортировать модуль динамически по строке, нужно использовать importlib:
import importlib
module_name = 'json'
json = importlib.import_module(module_name)Код переименовывает модуль только в области видимости импортера (другим файлам модуль будет известен под своим первоначальным именем.
Однако технически можно импортировать модуль под псевдонимом, а затем снова импортировать его без такового:
import os as system
import os # Это cработаетПосле выполнения кода выше можно ли использовать modulename в той же области видимости?
Встроенный список
sys.path представляет собой список каталогов, который может настраиваться через переменную среды PYTHONPATH.
Можно даже изменять список поиска в самой программе Python, модифицируя sys.path. Он инициализируется во время начального запуска, но впоследствии вы можете удалять, добавлять и сбрасывать его компоненты желаемым образом:
sys.path.append(r'С:\sourcedir')Разработчику на заметку
Когда приходит идея проекта, его хочется сразу запустить, а не ковыряться неделю в конфигах. Вот для таких случаев и есть серверы Aéza:
— сервер можно развернуть в пару кликов;
— поддерживается любая ОС (от AlmaLinux до Windows Server 2022);
— есть дата-центры в Москве и Санкт-Петербурге.
Хочешь — бери 1 ядро и 2 ГБ RAM, хочешь — развлекайся на 16 ядрах и 32 гигах памяти. Есть и выделенные серверы, если душа требует полной изоляции и свободы.
А главное — понятные тарифы, простая панель управления и бесплатная защита от DDoS уже в комплекте.
Так что если ты:
— запускаешь сервис;
— хочешь тестить код на «живом» сервере;
— устал от непредсказуемых облаков;
то заглядывай в Aéza, выбирай подходящий тариф и получай 15% кэшбек на старте.
Это #партнёрский пост
В Python 3 все строки по умолчанию являются Unicode-строками. Префикс u перед строкой (как в
u'\xA5') больше не нужен, так как все строки уже Unicode. Но он всё ещё разрешён для обратной совместимости с Python 2. Форматирование строк (%s) справится с комбинированной записью.Когда вы пытаетесь создать объект
pd.Series с использованием собственного индекса days_of_week, Pandas ожидает, что длина индекса будет равна длине массива данных. Если этого не происходит, код выпадает в ошибку.
Допустим любой неизменяемый тип меток индекса: строковые значения, кортежи, метки даты/времени и многое другое .Подобная гибкость очень существенно расширяет возможности Series, позволяя ссылаться на значение по порядковому номеру или по ключу/метке .В каком-то смысле у каждого значения есть два идентификатора.
Второй параметр конструктора Series, index, задает метки индекса объекта Series. Если не передать аргумент для этого параметра, по умолчанию pandas использует числовой индекс, начинающийся с 0 .При таком типе индекса иден-
тификаторы метки и позиции совпадают.Что будет, если передать в качестве индекса для ice_cream_flavors более короткий индекс days_of_week?
Словари являются типом данных, который обозначается как отображение в Python. Они хранят объекты в парах "ключ-значение" и позволяют быстро находить значения по ключам. Например,
my_dict = {'name': 'Alice', 'age': 25} позволяет получить доступ к имени с помощью my_dict['name'], что возвращает 'Alice'.
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
