Python | Готовимся к собесам
440 subscribers
22 photos
133 links
Вопросы с собеседований для позиций Python-разработчиков, тесты, практика от синьора. Читай, чтобы прокачаться перед встречей

Подготовка к собесам для Frontend https://t.me/+Y8231d36XXo5YTk6

Ссылка на для друга https://t.me/+Dn9D2WZCvno5MGZi
Download Telegram
Что такое wheels и eggs? В чём разница?

В Python wheels и eggs – это форматы пакетов для установки и дистрибуции пакетов с помощью утилиты управления пакетами pip.

Eggs был первоначально разработан как формат дистрибуции пакетов для Python, но был заменен wheels. В отличие от wheels, eggs могут содержать .pyc файлы, что может привести к проблемам при установке на другой платформе или версии Python.

Wheels – это новый формат дистрибуции пакетов, который был введен в Python 2.7. Он поддерживается большинством пакетов на PyPI и имеет множество преимуществ, например:

Он не содержит .pyc файлов, что снижает вероятность конфликтов.
Он легко переносится между платформами и версиями Python.
Он поддерживает сжатие библиотек и упрощает установку требований.
В целом, wheels считается более продвинутой и предпочтительной формой дистрибуции пакетов в Python.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
✈️ Алгоритмы. С примерами на Python [2023]

Когда важно, чтобы программа работала быстро и экономила память, на помощь приходят алгоритмы. Книга Джорджа Хайнемана — это практическое руководство, которое кратко и четко объясняет ключевые алгоритмы, применимые в большинстве языков программирования.

Она не требует университетского образования, в отличие от многих учебников с упором на теорию. В книге даны готовые решения, написанные на Python, которые сразу можно использовать для повышения эффективности программ. Алгоритмы сопровождаются иллюстрациями, а исходные коды доступны в открытом доступе.


➡️ Ссылка на книгу

➡️ Подготовка Python | #Книги
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое менеджер пакетов? Какие менеджеры пакетов вы знаете?

Менеджер пакетов – это инструмент, который позволяет управлять установкой, обновлением и удалением библиотек и зависимостей в проектах на языке Python.

Встречайте, вот наиболее популярные менеджеры пакетов Python:

pip – это стандартный менеджер пакетов Python. Он позволяет устанавливать пакеты из Python Package Index (PyPI) и других источников, а также управлять зависимостями проекта.
conda – это менеджер пакетов и среда управления, который позволяет управлять пакетами и зависимостями для проектов на Python, а также для других языков программирования и платформ.
easy_install – инструмент для установки и управления пакетами Python, который был стандартным до выпуска Python 3. Используется редко в настоящее время.
poetry – новый менеджер пакетов, предназначенный для замены в некоторой степени pip и virtualenv.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1🤯1
Что такое файлы .pth?

Файлы с расширением .pth – это файлы, которые могут быть использованы для добавления директорий в путь поиска модулей Python. Директивы .pth выполняются при запуске интерпретатора Python и добавляют определенные каталоги в переменную sys.path. Это удобно, когда нужно импортировать модули из нестандартных директорий без необходимости переноса файлов в директории по умолчанию. Использование директив .pth достаточно распространено в мире Python и они встречаются в различных средах разработки и фреймворках, таких как PyTorch.
Файлы .pth могут быть также использованы злоумышленниками для внедрения вредоносного кода в систему Python, так как они могут изменять список каталогов, в которых выполняется поиск модулей Python. Поэтому необходимо быть внимательными при работе с такими файлами и использовать только те файлы .pth, которые вы знаете и доверяете.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает флаг PYTHONOPTIMIZE?

Ответ:
Флаг -O или PYTHONOPTIMIZE в Python используется для оптимизации скомпилированного кода, что может привести к ускорению выполнения программы. Этот флаг удаляет отладочную информацию, отключает asset checks, asserts и отладочные проверки.

Стандартная оптимизация -O удаляет docstrings из скомпилированного byte-code, а также удаляет assert statements. С флагом -OO удаляются все docstrings в модулю (включая те, которые не соответствуют многострочным строкам) и также удаляются assert statements.

Запуск интерпретатора Python с флагом -O может уменьшить размер скомпилированного кода и сократить потребление памяти, что может привести к ускорению работы программы. Однако, для большинства приложений, эта оптимизация может не иметь значимого влияния на производительность.

Например, для запуска скрипта с флагом -O, можно использовать следующую команду в командной строке:
python -O my_script.py


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯2
В каких ситуациях возникает исключение NotImplementedError?

Ответ:
Исключение NotImplementedError возникает, когда метод или функция должны быть реализованы в подклассе, но не были реализованы. Это может произойти, когда родительский класс определяет метод, но не реализует его сам, а оставляет это для подклассов. В этом случае, если подкласс не реализует метод, он будет вызывать исключение NotImplementedError. Это может быть полезно для отладки, чтобы убедиться, что все необходимые методы реализованы в подклассах. Это также может возникнуть в
других ситуациях, например, если вы пытаетесь использовать неопределенную функцию или метод.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем фреймворк отличается от библиотеки?

Ответ:
Фреймворк и библиотека – это два разных подхода к организации кода, которые используются для упрощения разработки программного обеспечения.

Библиотека представляет собой коллекцию модулей или функций, предназначенных для использования другими приложениями. Она содержит набор готовых решений для различных задач и обеспечивает функциональность, которую можно использовать в своём приложении. Пользователь сам выбирает, какие модули или функции использовать, и какую логику реализовывать самостоятельно.

Фреймворк представляет собой интегрированный набор компонентов и инструментов, который предоставляет готовое решение для решения определенной задачи. Его основная цель – упростить разработку приложений, обеспечивая заранее заданную структуру и логику работы. В отличие от библиотеки, фреймворк накладывает определенные ограничения на структуру, логику и процесс разработки приложения, но при этом предоставляет готовый инструментарий для работы.

В целом, библиотека дает большую свободу в выборе логики и реализации приложения, но требует больше написания кода. Фреймворк же облегчает начало разработки и создает более унифицированный код, но может ограничивать возможности программиста по изменению поведения и структуры приложения.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Cython? Что такое IronPython? Что такое PyPy? Почему они до сих пор существуют и зачем?

Cython – это язык программирования, нацеленный на увеличение производительности Python-кода. Cython позволяет использовать возможности языка Python и C/C++ для эффективного написания расширений модулей на языке Python. Он позволяет вам писать код на Python, который доступен из C/C++, и наоборот. Cython обеспечивает скорость выполнения, сравнимую со скоростью выполнения на языке C/C++, при этом сохраняя простоту и удобство использования языка Python. Cython compiler
компилирует исходный код в C/C++ и затем переводит его в машинный код, что дает быстрый доступ к низкоуровневым ресурсам операционной системы, таким как память и ввод-вывод. Cython также предоставляет возможность использовать дополнительные функции, такие как статическая типизация и параллельное программирование, для дополнительного увеличения производительности.

IronPython – это реализация языка программирования Python, которая работает в контексте платформы .NET. IronPython предоставляет возможность использовать Python в качестве языка .NET. Он может использоваться для написания .NET-приложений, а также для расширения приложений, написанных на других языках .NET. IronPython является открытым и свободно распространяемым программным обеспечением.

PyPy — это высокопроизводительная реализация языка программирования Python. Он был создан с целью предоставления более быстрой и эффективной альтернативы стандартному интерпретатору CPython. PyPy включает компилятор Just-In-Time (JIT), который может оптимизировать выполнение кода Python во время выполнения, что может привести к значительному повышению производительности по сравнению с CPython, особенно для определенных типов рабочих нагрузок. PyPy также поддерживает многие из тех же функций и модулей, что и CPython, включая объектно-ориентированное программирование, динамическую типизацию и стандартную библиотеку Python.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Что не так с этим кодом? В каких условиях его используют?


if __debug__:
assert False, ("error")


Ответ:
Этот код вызывает ошибку утверждения assert с сообщением "error", если __debug__ равен True.
__debug__ – это встроенная переменная Python, которая является истинной, если к интерактивной консоли или скрипту был присоединен флаг оптимизации -O. Для типичных скриптов в режиме отладки эта переменная равна True. Если оптимизация включена, то интерпретатор Python игнорирует все операторы утверждения assert, поэтому этот код не вызовет ошибку в optimized mode.
Такой код может быть использован для проверки инвариантов в программе или для отладки кода. Если утверждение не выполняется и вызывается AssertionError, это означает, что в программе произошло что-то непредвиденное, что нарушило заданное утверждение, и программа остановится с сообщением об ошибке.

Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🤩 Исчерпывающее руководство по Python [2023]

Современный Python предлагает множество возможностей, что может запутать начинающих разработчиков. Книга отвечает на вопросы о том, как новичкам не перегореть на старте обучения, как опытным корректно оценить свой стиль программирования и глубже понять язык.

В книге акцентируется внимание на ключевых возможностях Python версии 3.6 и выше, а автор на практике объясняет, как структурировать код для лучшей читаемости, тестируемости и отладки.

Будут затронуты все важные темы программирования: абстракции данных, структуры программ, управление программной логикой, функции, объекты, модули и т.д.


➡️ Ссылка на книгу

➡️ Подготовка Python | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Что такое monkey patching? Приведите пример использования

Monkey patching – это техника изменения поведения кода во время выполнения путем динамической замены или добавления методов или атрибутов в существующем объекте. По сути, мы просто переопределяем метод за пределами объявления класса. Это может быть полезно, когда изменения не могут быть внесены в существующий код, и требует минимальных изменений в существующем коде.

Например, можно добавить новый метод в класс в runtime, который наследуется от базового класса:


class MyBaseClass:
def my_method(self):
print('Hello from MyBaseClass')

def monkey_patch():
def new_method(self):
print('Hello from new_method')
MyBaseClass.my_method = new_method

monkey_patch()
obj = MyBaseClass()
obj.my_method() # выведет "Hello from new_method"


В этом примере мы добавляем новый метод new_method() в класс MyBaseClass, используя функцию monkey_patch(). После этого, вызов метода obj.my_method() выведет строку 'Hello from new_method'

Важно учитывать, что использование monkey patching может усложнить отладку и поддержку в будущем, поэтому следует использовать эту технику с осторожностью и только при необходимости.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Что должен знать современный Middle Frontend

Вы и сами знаете, как тяжело обстоят дела с трудоустройством в 2025 году. Откликов на джунов больше, чем вакансий, и даже опытные вроде бы мидлы долго ищут работу.

В видео разобрал подробно, что нужно знать современному мидлу, чтобы соответствовать запросам рынка


👉 Смотреть видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Когда использование Python является «правильным выбором» для проекта?

Использование Python может быть правильным выбором для проекта в следующих случаях:

— Когда нужен быстрый прототип или быстрое решение, которое будет работать достаточно быстро без оптимизации производительности.
— Когда нужен простой и понятный синтаксис языка программирования, который позволит быстрее писать код и делать его более читабельным.
— Когда нужен доступ к большому количеству сторонних библиотек и фреймворков в области машинного обучения, науки о данных, веб-разработки и многих других областях.
— Когда необходимо использование «кляузы batteries included», определяющей ысокоуровневый язык программирования с широким спектром интегрированных библиотек и модулей.

Однако Python может не быть оптимальным выбором для тех приложений, где требуется высокая производительность или многоуровневая безопасность. В этих случаях может быть предпочтительнее использование языков, таких как C++, Java, или C#. Ну или Rust


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Что такое метод?

Ответ:
Методы в Python – это функции, определенные внутри класса, которые могут быть вызваны на экземпляре этого класса или на самом классе. Методы предоставляют способ для объектов класса взаимодействовать с данными, хранящимися внутри объекта, а также для выполнения действий, которые связаны с этими данными.

Например, если у вас есть класс Person с атрибутами name и age, атрибут name будет хранить имя объекта Person, а атрибут age будет хранить возраст. Вы можете определить методы, такие как get_name и get_age, которые могут быть вызваны на экземпляре класса для получения значения хранящихся в атрибутах name и age соответственно.

Вот пример определения класса Person с методами get_name и get_age:

class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def get_name(self):
return
self.name

def get_age(self):
return self.age

Здесь метод init – это конструктор класса, который инициализирует атрибуты name и age, а методы get_name и get_age предоставляют доступ к их значениям.

Кстати, __init__ — это один из дандер-методов, о том, как работать с ними неплохо описано тут:
Руководство по магическим методам в Питоне


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯3🔥1
Есть ли в Python оператор switch-case?

В Python нет прямого оператора switch-case, как в других языках программирования. Однако, начиная с версии Python 3.10, появилась возможность использовать оператор match-case, который является аналогом switch-case в других языках. Он позволяет проверять значения на соответствие определенным шаблонам и выполнять соответствующее действие в зависимости от того, какой шаблон соответствует значению.

Пример использования оператора match-case:

def process_value(value):
match value:
case 1:
print("Value is 1")
case 2 | 3 | 4:
print("Value is 2 or 3 or 4")
case _:
print("Value is not 1 or 2 or 3 or 4")

process_value(1) # output: Value is 1
process_value(3) # output: Value is not 1 or 2
Оператор match-case доступен только в версии Python 3.10 и выше, поэтому если вы используете более старую версию Python, то нужно воспользоваться другими способами для решения задачи, например, использовать условные выражения if-elif-else или словари.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
Как создать свой собственный пакет в Python?

Ответ:
Для создания своего собственного пакета в Python нужно выполнить следующие шаги:

Создать директорию с именем вашего пакета.

Внутри директории создать файл
init.py, который будет пустым, но он необходим, чтобы Python распознал эту директорию как пакет.

Создать необходимые модули и скрипты внутри директории вашего пакета.

Определить файл
setup.py с метаданными вашего пакета и его зависимостями, например:

from setuptools import setup, find_packages
setup(
name='mypackage',
version='1.0',
packages=find_packages(),
install_requires=['numpy', 'scipy']
)

Создать дистрибутив вашего пакета, выполнив команду python
setup.py sdist

Установить свой пакет с помощью pip, выполнив команду pip install dist/mypackage-1.0.tar.gz.

После этого вы можете использовать свой пакет в своих проектах или опубликовать его на Python Package Index (PyPI) для использования другими людьми.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Как передать необязательные или ключевые параметры из одной функции в другую?

В Python для передачи необязательных параметров в функцию используется синтаксис со знаком звездочки (*) и двойной звездочки (**). Вот пример:

def my_function(required_arg, *args, **kwargs):
print(required_arg)
if args:
print(args)
if kwargs:
print(kwargs)

my_function('Hello, world!', 2, 3, 4, my_keyword='some_value')
В этом примере required_arg – обязательный аргумент функции my_function. После этого первого аргумента мы указали символ звездочки (*), чтобы пометить все
следующие аргументы как необязательные. В примере, это args, который преобразуется в кортеж. Далее, мы указали символ двойной звездочки (**), чтобы пометить все
следующие аргументы как необязательные с ключами. Это параметр kwargs, который преобразуется в словарь.
В вызове my_function, мы передаем обязательный аргумент 'Hello, world!', аргументы args – 2, 3, 4, и ключевой параметр my_keyword со значением 'some_value' в kwargs.
Таким образом, эта функция может принимать переменное количество аргументов, как позиционных, так и именованных.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤯1
Что такое магические методы (dunder-методы)?

Ответ:
Магические методы, также известные как “dunder” (double underscore) методы в Python, это специальные методы, которые начинаются и заканчиваются двойным подчеркиванием. Они позволяют определить, как объекты этого класса будут вести себя в различных контекстах, например, при использовании операторов Python, таких как +, -, *, / и т.д., при вызове функций и методов, при сериализации и многое другое.

Некоторые примеры магических методов в Python включают:

init: инициализирует новый экземпляр объекта
str: определяет, как объект будет представлен в строковом формате
add: определяет, что происходит при использовании оператора +
len: определяет, как объект будет представлен при вызове функции len()
getitem: позволяет получать доступ к элементам объекта, как к элементам списка
Магические методы могут быть очень полезными при создании пользовательских классов в Python, так как они позволяют управлять поведением объектов в различных контекстах и создавать более понятный и гибкий код.

# иллюстрация "утиной типизации": мы можем измерять длину у всего, где есть метод len()

class MyClass:
def __len__(self):
print('длина - это смотря как посмотреть')
return 0

myclass = MyClass()
print(len(myclass))


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2
Python: большая книга примеров [2023]

"Большая книга примеров" предлагает подробное описание языка программирования Python, дополненное материалами из различных интернет-источников. Книга нацелена на то, чтобы помочь читателям понять язык через его описание и примеры использования, и может служить учебным пособием для начинающих.


🔤 Скачать книгу

➡️ Подготовка Python | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
В чём преимущества массивов numpy по сравнению с (вложенными) списками python?

Ответ:
Основное преимущество массивов NumPy перед списками Python заключается в том, что NumPy использует более оптимизированную память и имеет более эффективные методы работы с массивами (из-за реализации на C), что делает его подходящим выбором для работы с большими объемами данных и научных вычислений.

Например, с NumPy вы можете выполнять бродкастинг (broadcasting), матричные операции и другие векторизованные вычисления с более высокой производительностью, чем при использовании вложенных списков.

Некоторые из основных преимуществ NumPy:

Более оптимизированная память, что позволяет NumPy работать быстрее с большим объемом данных
Встроенные методы для выполнения арифметических операций, таких как сумма и произведение, которые могут работать сразу над всеми элементами массивов.
Возможность выполнять матричные операции и другие векторизованные вычисления.
Простой синтаксис для выполнения операций над массивами.
Возможность конвертировать массивы NumPy в другие формы данных, такие как списки Python или таблицы Pandas.
Eсли вы работаете с массивами данных, над которыми нужно выполнять научные вычисления, то использование NumPy будет более предпочтительным вариантом, чем использование списков Python.


Если знали ответ — поставьте 🔥
Если нет — 🤯

➡️ Подготовка Python | #вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3