Python собеседования
1.87K subscribers
340 photos
453 links
Подготовка к собеседованиям на позицию Python-разработчик

Еще больше на сайте https://frontview-it.ru

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🔥 Как использовать несколько блоков except для разных типов исключений?

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

Вот пример использования нескольких блоков except:


try:
# Код, который может вызвать исключение
num = int(input("Введите число: ")) # Можно ввести некорректное значение
result = 10 / num # Деление на ноль вызовет исключение ZeroDivisionError
print(f"Результат: {result}")

except ValueError: # Обработка ошибки преобразования в целое число
print("Ошибка: Введите корректное числовое значение.")

except ZeroDivisionError: # Обработка ошибки деления на ноль
print("Ошибка: Деление на ноль невозможно.")

except Exception as e: # Обработка всех остальных исключений
print(f"Произошла неожиданная ошибка: {e}")


В этом примере используется try для выполнения кода, который может вызвать исключения. Если пользователь вводит некорректное значение, срабатывает блок except ValueError. Если введено значение 0, срабатывает блок except ZeroDivisionError. Блок except Exception позволяет отлавливать любые другие исключения, которые могут возникнуть.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔥 Как открыть файл для записи или создания нового файла?

Для открытия файла для записи или создания нового файла в Python можно использовать функцию open(). Вот пример кода:


# Открываем файл для записи (если файла нет, он будет создан)
with open('example.txt', 'w') as file:
# Записываем строку в файл
file.write('Hello, world!')

# Файл автоматически закроется после выхода из блока with


В данном примере файл example.txt будет создан в текущей директории, если он ещё не существует, и в него будет записана строка "Hello, world!". Если файл уже существует, его содержимое будет перезаписано.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
🔥 Что такое класс и объект в Python?

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

Вот пример класса и объекта в Python:


# Определяем класс "Dog"
class Dog:
# Конструктор класса
def __init__(self, name, breed):
self.name = name # Имя собаки
self.breed = breed # Порода собаки

# Метод для представления информации о собаке
def bark(self):
return f"{self.name} говорит: Гав!"

# Создаем объект класса "Dog"
my_dog = Dog("Бобик", "Бульдог")

# Вызываем метод bark для объекта my_dog
print(my_dog.bark()) # Вывод: Бобик говорит: Гав!


В этом примере создан класс Dog с атрибутами name и breed, а также методом bark(). Объект my_dog является экземпляром класса Dog и обладает свойствами и методами, определенными в этом классе.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔥 Как импортировать модуль в свой код?

Импортировать модуль в Python можно с помощью ключевого слова import. Существуют различные способы импорта, в зависимости от того, что требуется. Вот несколько примеров:

1. Импорт всего модуля:


# Импортируем модуль math
import math

# Используем функцию sqrt из модуля math
result = math.sqrt(16) # Вычисляет квадратный корень
print(result) # Вывод: 4.0


2. Импорт конкретной функции или переменной из модуля:


# Импортируем только функцию sqrt из модуля math
from math import sqrt

# Используем функцию напрямую
result = sqrt(25) # Вычисляет квадратный корень
print(result) # Вывод: 5.0


3. Импорт с alias (псевдонимом):


# Импортируем модуль math с псевдонимом m
import math as m

# Используем функцию sqrt через псевдоним
result = m.sqrt(36) # Вычисляет квадратный корень
print(result) # Вывод: 6.0


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Создали каналы по новым направлениям
Присоединяйся!

👩‍💻 Git
🖥 SQL
👩‍💻 QA
Please open Telegram to view this post
VIEW IN TELEGRAM
👀1
🔥 Как использовать модуль datetime для работы с датами и временем?

Модуль datetime в Python предоставляет классы для работы с датами и временем. Вот несколько примеров использования этого модуля:

1. Получение текущей даты и времени:


import datetime

# Получаем текущую дату и время
now = datetime.datetime.now()

# Выводим текущую дату и время
print("Текущая дата и время:", now)


2. Создание конкретной даты:


import datetime

# Создаем объект даты
specific_date = datetime.datetime(2023, 10, 23) # Год, месяц, день

# Выводим конкретную дату
print("Конкретная дата:", specific_date)


3. Форматирование даты:


import datetime

# Получаем текущую дату
now = datetime.datetime.now()

# Форматируем дату в строку
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")

# Выводим отформатированную дату
print("Отформатированная дата:", formatted_date)


4. Выполнение арифметики с датами:


import datetime

# Получаем текущую дату
now = datetime.datetime.now()

# Добавляем 10 дней к текущей дате
future_date = now + datetime.timedelta(days=10)

# Выводим новую дату
print("Дата через 10 дней:", future_date)


5. Парсинг строки в дату:


import datetime

# Строка с датой
date_string = "2023-10-23"

# Преобразуем строку в объект даты
parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d")

# Выводим разобранную дату
print("Разобранная дата:", parsed_date)


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Как создать простой декоратор?

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


# Определяем декоратор
def my_decorator(func):
# Вложенная функция, которая будет оборачивать оригинальную функцию
def wrapper():
print("Что-то происходит до вызова функции.")
func() # Вызов оригинальной функции
print("Что-то происходит после вызова функции.")

return wrapper # Возвращаем обернутую функцию

# Используем декоратор
@my_decorator
def say_hello():
print("Привет!")

# Вызов функции
say_hello()


В этом примере my_decorator — это декоратор, который добавляет поведение до и после вызова функции say_hello. Когда say_hello вызывается, сначала выполняется код из wrapper, а затем оригинальная функция say_hello.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔2
🔥 Что такое протокол итератора (__iter__ и __next__)?

Протокол итератора в Python позволяет объектам становиться итерируемыми. Это достигается за счет реализации методов __iter__ и __next__. Вот пример:


class MyIterator:
def __init__(self, limit):
self.limit = limit # Устанавливаем предел итерации
self.current = 0 # Начальное значение

def __iter__(self):
return self # Возвращаем сам итератор

def __next__(self):
if self.current < self.limit: # Проверка, достигнут ли предел
result = self.current
self.current += 1 # Увеличиваем текущее значение
return result # Возвращаем текущее значение
else:
raise StopIteration # Вызываем исключение для завершения итерации

# Использование итератора
iterator = MyIterator(5)
for number in iterator:
print(number)


В этом примере MyIterator реализует итератор, который генерирует числа от 0 до указанного предела. Метод __iter__ возвращает объект итератора, а метод __next__ возвращает следующее значение и, когда предел достигнут, вызывает StopIteration, чтобы сигнализировать о завершении.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 Что такое асинхронное программирование и зачем оно нужно?

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

Вот пример использования асинхронного программирования с помощью модуля asyncio:


import asyncio

async def fetch_data(delay):
print(f"Fetching data with a delay of {delay} seconds...")
await asyncio.sleep(delay) # Имитация асинхронной операции
print(f"Data fetched after {delay} seconds.")
return f"Data {delay}"

async def main():
# Запускаем несколько задач асинхронно
tasks = [fetch_data(2), fetch_data(1), fetch_data(3)]
results = await asyncio.gather(*tasks)
print("Results:", results)

# Запуск основной функции
asyncio.run(main())


В этом примере fetch_data — асинхронная функция, которая имитирует задержку при получении данных. В функции main несколько таких задач создаются и запускаются одновременно с помощью asyncio.gather(). Асинхронное программирование позволяет эффективно использовать ресурсы, так как программа не блокируется во время ожидания завершения операций.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🔥 Как подключиться к реляционной базе данных (например, SQLite) в Python?

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


import sqlite3

# Создаем соединение с базой данных (если файл не существует, он будет создан)
connection = sqlite3.connect('example.db')

# Создаем курсор для выполнения SQL-команд
cursor = connection.cursor()

# Создаем таблицу (если ее нет)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

# Вставляем данные в таблицу
cursor.execute('''
INSERT INTO users (name, age) VALUES ('Alice', 30)
''')
cursor.execute('''
INSERT INTO users (name, age) VALUES ('Bob', 25)
''')

# Сохраняем изменения
connection.commit()

# Запрашиваем данные из таблицы
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall() # Получаем все результаты

# Выводим результаты
for row in rows:
print(row)

# Закрываем курсор и соединение
cursor.close()
connection.close()


В этом примере создается база данных example.db, а затем создается таблица users, в которую добавляются несколько записей. После этого выполняется запрос для получения всех данных из таблицы, результаты выводятся на экран. В конце закрываются соединение и курсор.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 В чем разница между многопоточностью и многопроцессорностью?

Многопоточность и многопроцессорность в Python имеют разные подходы к параллелизму.

Многопоточность (threading) позволяет запускать несколько потоков в одном процессе, что хорошо подходит для задач, связанных с вводом-выводом. Однако из-за GIL (Global Interpreter Lock) одновременное выполнение потоков в вычислительных задачах сильно ограничено.

Многопроцессорность (multiprocessing) создает отдельные процессы с собственными интерпретаторами Python, что позволяет эффективно использовать многоядерные процессоры. Каждый процесс имеет свою память, что может быть более ресурсоемко, но обходит ограничения GIL.

Выбор между ними зависит от природы задачи: для I/O лучше использовать многопоточность, для вычислений – многопроцессорность.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
🔥 Что такое операторы в Python и какие основные типы операторов существуют?

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

Основные типы операторов в Python:

1. Арифметические операторы: выполняют математические операции. Например: + (сложение), - (вычитание), * (умножение), / (деление), % (остаток от деления), ** (возведение в степень), // (целочисленное деление).

2. Операторы присваивания: используются для присвоения значений переменным. Например: =, +=, -=, *=, /=, %=.

3. Операторы сравнения: сравнивают значения и возвращают True или False. Например: == (равно), != (не равно), >, <, >=, <=.

4. Логические операторы: используются для объединения условных выражений. Например: and, or, not.

5. Битовые операторы: выполняют операции на уровне битов. Например: & (AND), | (OR), ^ (XOR), ~ (NOT), << (сдвиг влево), >> (сдвиг вправо).

6. Операторы принадлежности: проверяют наличие значения в последовательности. Например: in, not in.

7. Операторы идентичности: проверяют, ссылаются ли две переменные на один объект. Например: is, is not.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🔥 Что такое функция в Python?

Функция в Python — это блок кода, который выполняет определённую задачу и может быть повторно использован в разных частях программы. Функции позволяют структурировать код, делая его более организованным, читаемым и удобным для поддержки. Для объявления функции используется ключевое слово def, после которого следует имя функции и список параметров в круглых скобках.

Пример определения функции:


def greet(name):
return f"Привет, {name}!"


В этом примере определена функция greet, которая принимает аргумент name и возвращает приветственное сообщение. Чтобы вызвать функцию, нужно использовать её имя и передать необходимые аргументы:


message = greet("Анна")
print(message) # Выведет: Привет, Анна!


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
🔥 Что такое блок finally и когда его использовать?

Блок finally в Python используется в конструкции обработки исключений и предназначен для выполнения кода независимо от того, произошло исключение в блоке try или нет. Оператор finally следует после блоков try и except.

Код внутри finally будет выполнен в любом случае: если исключение возникло и было обработано, если не возникло вовсе или даже если не было перехвачено. Это полезно для выполнения операций очистки, таких как закрытие файлов, освобождение памяти или завершение сетевых соединений.

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


try:
file = open('data.txt', 'r')
data = file.read()
except IOError:
print("Ошибка при чтении файла")
finally:
file.close()


В этом примере файл будет закрыт в блоке finally независимо от того, произошла ошибка при чтении или нет, что обеспечивает корректное освобождение ресурсов.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥2
🔥 Что такое контекстный менеджер with при работе с файлами?

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

Пример использования with при работе с файлом:


with open('data.txt', 'r') as file:
data = file.read()
# обработка данных


В этом примере файл data.txt открывается для чтения, и его объект присваивается переменной file. После выхода из блока with файл автоматически закрывается, что устраняет необходимость вызывать file.close() вручную.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥21
🔥 Как создавать экземпляры класса?

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

Пример определения класса и создания его экземпляра:


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

# Создание экземпляра класса Person
person1 = Person("Иван", 30)


В этом примере класс Person имеет метод __init__, который инициализирует атрибуты name и age. Экземпляр person1 создается путем вызова Person("Иван", 30).

После создания экземпляра можно обращаться к его атрибутам и методам:


print(person1.name) # Выведет: Иван
print(person1.age) # Выведет: 30


Экземпляры классов позволяют работать с конкретными объектами, имеющими собственные данные и поведение, определенное в классе.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥1👀1
🔥 Какие способы импорта модулей существуют?

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

1. Стандартный импорт всего модуля:


import module_name


Позволяет использовать объекты модуля через его имя:


import math
result = math.sqrt(16)


2. Импорт конкретных объектов из модуля:


from module_name import object_name


Сразу подключает объект в пространство имен:


from math import sqrt
result = sqrt(16)


3. Импорт всех объектов из модуля:


from module_name import *


Загружает все объекты модуля в текущее пространство имен. Не рекомендуется из-за возможных конфликтов имен.

4. Переименование модуля при импорте:


import module_name as alias


Используется для сокращения длинных имен или разрешения конфликтов:


import numpy as np
array = np.array([1, 2, 3])


5. Импорт объектов с переименованием:


from module_name import object_name as alias


Позволяет переименовать импортируемый объект:


from math import sqrt as square_root
result = square_root(16)


6. Импорт из вложенных модулей (пакетов):


from package.module import object_name


Например:


from os.path import join
path = join('folder', 'file.txt')


7. Динамический импорт с помощью importlib:


import importlib
module_name = importlib.import_module('module_name')


Применяется для импорта модулей по строковому имени во время выполнения программы.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔥 Как работать с форматами данных JSON и CSV?

Python предоставляет встроенные модули для работы с форматами данных JSON и CSV, что упрощает процессы чтения и записи.

Работа с JSON

Модуль json позволяет преобразовывать объекты Python в JSON и обратно.

Чтение JSON из файла:


import json

with open('data.json', 'r') as file:
data = json.load(file)


Запись в JSON:


with open('data.json', 'w') as file:
json.dump(data, file, ensure_ascii=False)


Параметр ensure_ascii=False сохраняет русские символы.

Работа с CSV

Модуль csv используется для взаимодействия с CSV файлами.

Чтение CSV:


import csv

with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)


Запись в CSV:


import csv

with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Имя', 'Возраст'])
writer.writerow(['Иван', 30])


Параметр newline='' нужен для корректного формирования строк.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔥 Как применять декораторы к функциям?

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

Как применять декораторы к функциям:

1. Определение декоратора:


def decorator_function(original_function):
def wrapper_function(*args, **kwargs):
# Дополнительное поведение
result = original_function(*args, **kwargs)
# Дополнительное поведение
return result
return wrapper_function


2. Применение декоратора с помощью @:


@decorator_function
def say_hello():
print("Привет!")


Здесь say_hello обернута декоратором decorator_function.

3. Альтернативный способ без @:


def say_hello():
print("Привет!")

say_hello = decorator_function(say_hello)


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

Создание декоратора для измерения времени выполнения функции:


import time

def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Время выполнения: {end_time - start_time} секунд")
return result
return wrapper


Применение декоратора к функции:


@timer
def long_task():
time.sleep(2)
print("Задача выполнена")

long_task()


При вызове long_task() функция будет выполнена, а декоратор выведет время ее выполнения.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🔥 Что такое SQL и как выполнять SQL-запросы из Python?

SQL (Structured Query Language) — это язык структурированных запросов, предназначенный для управления и обработки данных в реляционных базах данных.

Чтобы выполнять SQL-запросы из Python, необходимо установить соответствующую библиотеку для взаимодействия с базой данных. Например, для SQLite используется стандартная библиотека sqlite3, для PostgreSQL — psycopg2, для MySQL — pymysql.

Пример использования sqlite3:


import sqlite3

# Подключение к базе данных
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Выполнение SQL-запроса
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")

# Вставка данных
cursor.execute("INSERT INTO users (name) VALUES (?)", ('Alice',))

# Сохранение изменений
conn.commit()

# Получение данных
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print(rows)

# Закрытие соединения
conn.close()


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151🔥1
🔥 Что такое фреймворк pytest и как его использовать?

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

Для начала работы необходимо установить pytest:


pip install pytest


Тестовые функции должны начинаться с test_ и могут быть размещены в файлах, имена которых также начинаются с test_. Пример простого теста:


# test_sample.py

def inc(x):
return x + 1

def test_inc():
assert inc(3) == 4


Запуск тестов выполняется командой:


pytest


Pytest найдет и выполнит все тесты в проекте.

Для запуска одного тестового файла:


pytest test_sample.py


Параметризация позволяет запускать тест с разными входными данными:


import pytest

@pytest.mark.parametrize("input, expected", [(1, 2), (3, 4), (5, 6)])
def test_inc(input, expected):
assert inc(input) == expected


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142🤩2