Обучающий канал по Python Ссылка для друга - https://t.me/+I7jrAQKR5xAyYTAy По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Python_per_month
❓ Вопрос на собеседовании
Как работает функция zip()
в Python, что произойдет, если переданные итерируемые объекты имеют разную длину, и как можно преобразовать результат работы этой функции обратно в оригинальные последовательности?
Ответ ⬇️
Функция zip() берет несколько итерируемых объектов и объединяет их в один итератор, который возвращает кортежи, сформированные из элементов входных последовательностей. Если переданные итерируемые объекты имеют разную длину, zip() завершает свою работу, как только самая короткая из последовательностей исчерпается.
Чтобы преобразовать результат zip() обратно в исходные последовательности, можно использовать распаковку с * (оператор звездочка), которая разделяет кортежи на отдельные списки.
Пример использования ⚙️
# Объединяем два списка
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30]
# zip объединяет элементы двух списков
zipped = zip(names, ages)
print(list(zipped)) # [('Alice', 25), ('Bob', 30)]
# Разъединяем с помощью распаковки
zipped_again = zip(names, ages) # Создаем заново, так как zip() исчерпаем
unzipped_names, unzipped_ages = zip(*zipped_again)
print(unzipped_names) # ('Alice', 'Bob')
print(unzipped_ages) # (25, 30)
👩💻 Задача по Python: Поиск первого неповторяющегося символа в строке
Напишите функцию, которая находит первый символ в строке, который не повторяется. Если все символы повторяются, функция должна вернуть None.
Пример:
print(first_unique_char("swiss")) # Ожидаемый результат: "w"
print(first_unique_char("aabb")) # Ожидаемый результат: None
⚙️ itertools.cycle
В Python функция itertools.cycle()
создаёт бесконечный цикл по переданному итерируемому объекту. Это полезно для повторения элементов последовательности.
Python Learning 👩💻
🏁 Python разрабатывает API, как спорткар🏎 разгоняется до сотни — с FastAPI всё быстро, надёжно и элегантно 🏁
🛠 Если вам нужны инструменты для создания веб-приложений, которые не тормозят, не тратят лишних ресурсов и готовы к продакшену — ждём вас 26 ноября в 20:00 мск на бесплатном открытом уроке, где мы разберём, как FastAPI переворачивает мир разработки API. Узнаете всё: от маршрутизации до работы с базами данных и асинхронного программирования. А еще покажем, как создать простое API буквально за пару минут.
FastAPI — это не только скорость, но и простота в использовании. А для тех, кто хочет глубже нырнуть в разработку с Python, будет скидка на курс «Python Developer. Professional».
🔥Спикер Валентин Шилин — старший программист с опытом более 15 лет на С++, С#, JavaScript, Python, Scala, Java; аналитик данных; эксперт в обработке больших данных с помощью Scala/Spark и Hadoop Cloudera.
🔴 Зарегистрируйтесь прямо сейчас: https://clck.ru/3EZYic
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ Masonite — мощный Python-фреймворк для веб-приложений
Masonite — это современный и простой в использовании фреймворк для создания веб-приложений. Он предлагает удобный API, поддержку архитектуры MVC и встроенные инструменты для миграций и тестирования.•
Поддержка инверсии управления (IoC) для гибкого управления зависимостями.•
Интеграция с популярными инструментами, такими как ORM Orator.•
Удобная система маршрутизации и шаблонов.
🔗 Ссылочка на доку
Python Learning 👩💻
⚙️ textwrap.dedent()
В Python метод textwrap.dedent()
удаляет общие отступы из многострочного текста. Это полезно для упрощения форматирования строк, особенно в документации или больших блоках текста.
Python Learning 👩💻
⚙️ pathlib.Path.glob()
В Python метод Path.glob()
из модуля pathlib
используется для поиска файлов и директорий, соответствующих шаблону. Он мощнее, чем простое перечисление файлов, и поддерживает поиск с использованием подстановочных знаков.
Python Learning 👩💻
➡️ Memray — профилирование памяти для Python
Memray — это современный инструмент для профилирования памяти в Python, разработанный командой Bloomberg. Он позволяет детально отслеживать выделение и использование памяти в ваших приложениях, что помогает выявлять утечки и оптимизировать производительность.•
Глубокий анализ: Memray отслеживает все выделения памяти, включая те, что происходят в нативных расширениях на C/C++.•
Гибкие отчёты: Генерирует отчёты в виде текстовых файлов, графов и HTML-страниц для наглядного представления данных.•
Поддержка многопоточности: Корректно работает с многопоточными приложениями, обеспечивая точный анализ.•
Интеграция с Jupyter: Позволяет визуализировать данные профилирования прямо в Jupyter Notebook.
🔗 Ссылочка на доку
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
В inner переменная x обозначена как nonlocal, поэтому изменение внутри inner влияет на x в outer, и функция возвращает local nonlocal.
Python Learning 👩💻
🚀 Вебинар: Погружение в децентрализованные технологии🚀
Узнайте, как использовать Solidity для создания продвинутых dApp. Этот вебинар важен для понимания текущего состояния и потенциала Web3, что критично для разработчиков в освоении Solidity и создании продвинутых dApp.
⏰ Дата и время: 11.11.2024 в 20:00 (мск)
На уроке будет:
- Обсуждение базовых технологий, включая блокчейн и смарт-контракты
- Представление и анализ нескольких децентрализованных приложений
- Рассмотрение успешных кейсов использования Solidity
- Обсуждение безопасности
- Прогнозы и перспективы развития децентрализованных технологий
В результате участники получат актуальные знания о применении Solidity в разработке современных dApp.
Не упустите возможность узнать больше о dApp и их потенциале!
👉 Зарегистрируйтесь для участия: https://clck.ru/3ETp4R
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Присоединяйтесь к бесплатному мини-курсу «Симулятор профессии дата-сайентист»
За 3 дня с нуля создадите виртуального робота-помощника (как Siri, Олег или Маруся) и решите несколько типичных задач дата-сайентиста, чтобы понять, подходит ли вам это направление
А еще:
- поймете, какие навыки нужны для работы в Data Science
- познакомитесь с языком Python
- узнаете о библиотеках Pandas, Plotly, Numpy
- освоите основы машинного обучения
- поработаете с Google Colab
- напишете AI-driven прототип
Все участники получат подарки: чек-листы и гайды, и чтобы больше узнать о профессии, бессрочный доступ к курсу «Основы Python: пишем чат-бота»
Записаться на мини-курс и забрать подарки
⚙️ itertools.product()
В Python функция itertools.product()
генерирует декартово произведение нескольких итерируемых объектов, что удобно для перебора всех комбинаций элементов.
Python Learning 👩💻
⚙️ itertools.combinations()
В Python функция itertools.combinations() генерирует все возможные комбинации элементов заданной длины из итерируемого объекта. Это полезно для задач, связанных с перебором подмножеств.
Python Learning 👩💻
✍️ Циклический сдвиг списка на N элементов вправо
Выше приведено решение с помощью слайсов.
Python Learning 👩💻
⚙️ filter()
В Python функция filter()
используется для отбора элементов, соответствующих условию. Она возвращает итератор, что делает её удобной и эффективной для обработки больших данных.
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Декоратор заменяет функцию say_hello на функцию wrapper. Когда вызывается say_hello, выполняется wrapper, который сначала выводит Before function call, затем вызывает оригинальную функцию func() (say_hello) и выводит её результат Hello!. После этого завершается фразой After function call.
🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 20-21 ноября в 19:00 мск.
О перспективах направления Python и многом другом расскажет Рафаэль Мухаметшин, Middle Бэкенд-разработчик в «ПИК Digital» с опытом в разработке более 3 лет.
На вебинаре вы:
☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Поймете как продолжить обучение, какие навыки потребуются, чтобы стать backend-разработчиком на Pythоn.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.
🎁 Приятные бонусы: полезный гайд для начинающего Python-разработчика и гайд о сленге в IT всем участникам интенсива!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:LjN8JzRsh
⚙️ zip_longest()
В Python функция zip_longest()
из модуля itertools
позволяет объединять итерируемые объекты разной длины, заполняя отсутствующие значения с помощью заполнителя (fillvalue
). Это полезно для работы с несоответствующими наборами данных.
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Генератор в Python останавливает свою работу, когда достигает инструкции return или конца функции. При этом он выбрасывает исключение StopIteration. В данном коде генератор yield возвращает значения 0, 1, и 2 при каждом вызове next(). После того, как итерации закончены, вызывается return 'Done', что приводит к выбросу StopIteration, и его сообщение ('Done') может быть прочитано, если исключение перехватывается вручную. Поэтому при попытке вызова next(gen) после последнего значения происходит исключение.
Что такое виртуальная память и как она помогает эффективно распределять ресурсы? Как система может выделить больше памяти, чем на самом деле доступно на сервере? На нашем вебинаре разберем ключевые вопросы управления памятью в Linux.
Узнаете об эволюции адресации памяти и поймете, зачем используется swap и как работает OOM Killer, защищая систему от нехватки ресурсов.
Погружаясь в тонкости управления памятью, вы сможете оптимизировать свои процессы в Linux и лучше понимать поведение системы под нагрузкой.
Присоединяйтесь 14 ноября в 19:00, чтобы расширить свои знания и улучшить свои навыки работы с памятью в Linux.
Присоединяйтесь и получите скидку на участие в курсе «Computer Sciences»: https://clck.ru/3EYFXX
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❓ Вопрос на собеседовании
Как работает менеджер контекста (context manager) в Python, и как создать свой собственный?
Ответ ⬇️
Менеджер контекста — это механизм в Python, который автоматически управляет ресурсами, такими как файлы или сетевые соединения. Основное преимущество использования менеджера контекста — автоматическое освобождение ресурсов (например, закрытие файла), даже если произошла ошибка.
Пример использования ⚙️
Для создания менеджера контекста можно использовать:
• Ключевые слова with и open (для встроенных менеджеров контекста).
• Метод __enter__() и __exit__() (для собственных классов).
• Декоратор @contextmanager из модуля contextlib.
# Создание менеджера контекста через класс
class FileManager:
def __init__(self, filename, mode):
self.file = None
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_value, traceback):
if self.file:
self.file.close()
# Использование собственного менеджера контекста
with FileManager('example.txt', 'w') as f:
f.write('Привет, мир!')
# Файл автоматически закрывается после выхода из блока "with"
🤔Вас когда-нибудь ставили в тупик типы данных? Почему Python иногда ведет себя так «гибко»?
🚀Узнайте, как этот фундаментальный аспект помогает создавать мощные и эффективные программы.14 ноября в 20:00 мск приглашаем вас на открытый урок по типам данных в Python.
👩💻Мы разберемся в динамической и статической типизации, покажем, чем они полезны на практике, и поможем понять, как различные типы данных влияют на работу вашего кода. Это знание — ключ к тому, чтобы уверенно писать программы.Мечтаете стать востребованным Python-разработчиком? Это ваше идеальное начало!
⏩Присоединяйтесь к нам на вебинаре, а после — на полном курсе «Python Developer. Basic», чтобы ускорить свое погружение в язык программирования и разработку. Регистрируйтесь на бесплатный урок и получите скидку на полный курс: https://meetup.otus.ru/python_basic-lesson-14-11-2024?utm_source=telegram&utm_medium=cpm&utm_campaign=python_basic&utm_term=Python_per_month&utm_content=lesson_14-11-2024_usp-python_python_text_text-headline2_aida_long_aibanner_lesson-banner_green_standart&erid=LjN8KVAA7
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🤓 Не можем обойти стороной новый выпуск подкаста «Деньги любят техно». Команда делает сезон про различия подходов к работе в DS-подразделениях в финтехе и в других отраслях, и второй эпизод посвящен промышленности. Если хотите успешно пройти собеседование – включайте!
Что в эпизоде:
● Чем отличается набор скиллов и необходимых знаний;
● С какими данными приходится работать, как часто нужно их обновлять, какие подходы к объединению данных из разных источников используют в финтехе и в промышленности;
● Какие задачи решают DS в обеих отраслях и похожи ли они между собой;
● Где интереснее и какие дополнительные навыки нужны для работы в обеих отраслях?
С разных сторон делятся опытом директор департамента технологий ИИ «Русала» Михаил Граденко и начальник управления моделирования партнерств и ИТ-процессов ВТБ Юлий Шамаев.
Видео-версия 👀
Аудио 🎧
⚙️ contextlib.redirect_stdout
Функция contextlib.redirect_stdout
в Python временно перенаправляет вывод print()
и других операций записи. Полезно, когда нужно записать вывод в файл или перехватить его для дальнейшей обработки.
Python Learning 👩💻
⚙️ __del__
В Python метод __del__
служит деструктором, который вызывается при уничтожении объекта. Он позволяет выполнять завершающие действия, такие как освобождение ресурсов или запись логов, перед тем как объект будет удалён сборщиком мусора.
Python Learning 👩💻
❓ Вопрос на собеседовании
Как работает метод @property
в Python, и почему он считается полезным для инкапсуляции?
Ответ ⬇️
@property в Python позволяет создавать методы, которые можно вызывать как атрибуты. Это удобно для инкапсуляции и контроля над доступом к данным, позволяя нам реализовать "геттеры" и "сеттеры" в виде атрибутов, вместо прямого изменения переменных. @property можно использовать для вычисляемых значений или для валидации перед присвоением, сохраняя при этом простой синтаксис атрибутов.
Пример использования ⚙️
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value < 0:
raise ValueError("Радиус не может быть отрицательным")
self._radius = value
circle = Circle(5)
print(circle.radius) # 5
circle.radius = 10
print(circle.radius) # 10
circle.radius = -1 # Ошибка: ValueError
⁉️ Столкнулись с тормозящим кодом?
Асинхронность и потоки в Python — это два инструмента, которые могут сделать ваши программы быстрее, но где же разница? Если вам важно оптимизировать выполнение запросов и IO-операций, не пропустите бесплатный открытый урок 12 ноября в 20:00 мск!
Мы рассмотрим вытесняющую и кооперативную многозадачность, обсудим процессы и потоки на уровне ОС. Вы узнаете, что такое race conditions и как их избежать, а также получите практическое понимание, как работает asyncio в Python.
👨💻🛠👨🏻💻 Урок для Python-разработчиков, Data Scientists и ML-инженеров, которые работают с базами данных, API и многозадачностью.
🔴 Запишитесь на урок и получите скидку на курс «Python для аналитики»: https://clck.ru/3ESZ3Z
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Соединение списка и множества в словарь
Для создания словаря из списков и множеств нужно сначала объединить элементы в кортежи при помощи функции zip()
, а затем создать словарь из этих кортежей при помощи функции dict()
.fruit_prices
будет содержать словарь {'apple': 1.20, 'banana': 0.80, 'orange': 1.50}
.
Python Learning 👩💻
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Функция make_multiplier возвращает лямбду, которая замыкает n. doubler умножает на 2, а tripler — на 3, поэтому результат 10 и 15.
Python Learning 👩💻
🧠Узнаем сколько раз встречается каждая буква в предложении
Код представлен на картинке.
Python Learning 👩💻