В Python и итераторы, и генераторы позволяют перебирать элементы коллекций, но работают немного по-разному.
__iter__()
и __next__()
. Метод __iter__()
возвращает сам итератор, а __next__()
— следующий элемент коллекции. Если элементы заканчиваются, __next__()
должен вызвать исключение StopIteration
. Итераторы позволяют явно перебирать элементы коллекции, не требуя, чтобы все элементы были доступны в памяти одновременно.yield
. Главное отличие генератора заключается в том, что значения генерируются по требованию. Каждый раз, когда генератор достигает yield
, он возвращает значение и «замирает», сохраняя своё состояние до следующего вызова. Это позволяет использовать меньше памяти при итерации по длинным последовательностям.#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 С помощью каких инструментов можно выполнить статический анализ кода?
Для статического анализа кода есть несколько инструментов:
Pylint - это инструмент, который анализирует исходный код на соответствие PEP8, а также предупреждает о потенциальных ошибках в коде.
Flake8 - это комбинированный инструмент, который объединяет в себе Pylint, PyFlakes и множество других правил, обеспечивающих соответствие стиля написания кода и обнаруживающих ошибки в исходном коде.
Mypy - это статический типизатор для Python, который позволяет находить ошибки в типах переменных в исходном коде.
Bandit - это инструмент для поиска уязвимостей в исходном коде Python.
Black - это инструмент для автоматического форматирования кода Python, который придерживается только одного стиля написания кода.
Pycodestyle — это простая консольная утилита для анализа кода Python, а именно для проверки кода на соответствие PEP8. Один из старейших анализаторов кода, до 2016 года носил название pep8, но был переименован по просьбе создателя языка Python Гвидо ван Россума.
Vulture — это небольшая утилита для поиска “мертвого” кода в программах Python. Она использует модуль ast стандартной библиотеки и создает абстрактные синтаксические деревья для всех файлов исходного кода в проекте. Далее осуществляется поиск всех объектов, которые были определены, но не используются. Vulture полезно применять для очистки и нахождения ошибок в больших базовых кодах.
Эти инструменты могут улучшить качество кода, облегчить его чтение и поддержку, а также помочь избежать ошибок, связанных с типами переменных и уязвимостями безопасности.
Пишите в комментариях, какие инструменты анализа кода используете вы 👇
@python_job_interview
Для статического анализа кода есть несколько инструментов:
Pylint - это инструмент, который анализирует исходный код на соответствие PEP8, а также предупреждает о потенциальных ошибках в коде.
Flake8 - это комбинированный инструмент, который объединяет в себе Pylint, PyFlakes и множество других правил, обеспечивающих соответствие стиля написания кода и обнаруживающих ошибки в исходном коде.
Mypy - это статический типизатор для Python, который позволяет находить ошибки в типах переменных в исходном коде.
Bandit - это инструмент для поиска уязвимостей в исходном коде Python.
Black - это инструмент для автоматического форматирования кода Python, который придерживается только одного стиля написания кода.
Pycodestyle — это простая консольная утилита для анализа кода Python, а именно для проверки кода на соответствие PEP8. Один из старейших анализаторов кода, до 2016 года носил название pep8, но был переименован по просьбе создателя языка Python Гвидо ван Россума.
Vulture — это небольшая утилита для поиска “мертвого” кода в программах Python. Она использует модуль ast стандартной библиотеки и создает абстрактные синтаксические деревья для всех файлов исходного кода в проекте. Далее осуществляется поиск всех объектов, которые были определены, но не используются. Vulture полезно применять для очистки и нахождения ошибок в больших базовых кодах.
Эти инструменты могут улучшить качество кода, облегчить его чтение и поддержку, а также помочь избежать ошибок, связанных с типами переменных и уязвимостями безопасности.
Пишите в комментариях, какие инструменты анализа кода используете вы 👇
@python_job_interview
Для упаковки бинарных зависимостей в проект следует использовать менеджеры пакетов. Для Python наиболее распространены pip и conda. Для Java - Maven или Gradle.
Пример для Python с использованием pip:
Установите необходимые библиотеки и зависимости в проекте:
pip install requests numpy pandas
Создайте файл requirements.txt с полным списком зависимостей:
requests
numpy
pandas
Упакуйте зависимости в архив:
pip freeze > requirements.txt
Можно передать файл
requirements.txt
другим пользователям вашего проекта, которые могут установить все зависимости одной командой:pip install -r requirements.txt
Для упаковки бинарных зависимостей можно использовать инструмент wheel. Wheel-файлы - это zip-архивы, содержащие установочные файлы для Python-пакетов, и могут содержать бинарные расширения (например, скомпилированные модули C), которые необходимо собрать и установить на целевой машине.
Для создания wheel-файла для Python-пакета можно использовать команду pip wheel. Например, если есть файл с требованиями
requirements.txt,
содержащий список зависимостей вашего проекта, можете создать wheel-файлы для всех зависимостей с помощью следующей команды:pip wheel -r requirements.txt
Вы также можете установить wheel-файлы с помощью pip install, указав имя файла:
pip install mypackage-1.0.0-py3-none-any.whl
Таким образом, вы можете создавать и распространять бинарные зависимости в виде wheel-файлов и использовать их при установке пакетов на других устройствах.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Периодически на собеседованиях попадаются задачи с похожей формулировкой.
def find_all_keys(input_dict: dict) -> list:
result = []
for key, val in input_dict.items():
if key.startswith('description'):
result.append(val)
if isinstance(val, dict):
result.extend(find_all_keys(val))
return result
Функция перебирает все элементы словаря и либо кладет его в новый словарь с результатами, если есть совпадение с искомым, либо запускает сама себя для элементов, представляющие собой так же словарь. На выходе получается массив найденных значений.
data = yaml.safe_load(Path(sys.argv[1]).read_text())
descriptions = find_all_keys(data)
Ну вот, теперь на одну проблемную задачу меньше)
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Держите большой список из 98 вопросов по Python и немного по смежным штукам типо Git, SQL.
Вопросы есть простые и не очень, вот некоторые из них:
• Чем файл
.pyc
отличается от .py
• Что такое GIL
• Будет ли возвращать что-то функция без
return
?• Что такое миксины
• Сколько может быть родителей и наследников у класса
• Что такое json, xml
• Какой паттерн программирования реализует Django
• Что такое JOIN и какой он может быть
• Метаклассы в Python
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Держите 36 вопросов с ответами по Python + вопросы по Computer Science, Django, по базам данных и не только.
Успешных собеседований)
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machine learning Interview
▪Смотреть
▪Данные
▪Ноутбук
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Эти вопросы покрывают практически все темы Python + затрагивают азы Computer Science: алгоритмы, структуры данных и т.д.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы в духе "что такое замыкание", "расскажи про CPython", локальные/глобальные переменные, блокировщик GIL, CPU-bound- и IO-bound-задачи
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Здесь очень подробно и понятно объясняются ключевые темы Python, можно использовать, чтобы освежить азы перед собеседованием
К каждой главе прилагается Google Colab, что очень удобно
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM