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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
😎Использование параметров в SQL-запросах — один из ключевых способов предотвращения SQL-инъекций. Вместо вставки пользовательских данных напрямую в запрос, данные передаются через параметры, что исключает возможность выполнения вредоносного кода.


import sqlite3

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

# Пользовательский ввод
user_id = '1 OR 1=1'

# Безопасный запрос с использованием параметров
query = "SELECT * FROM users WHERE id = ?"
cursor.execute(query, (user_id,))

# Получение результата
result = cursor.fetchall()


В этом примере данные из переменной user_id передаются в запрос через параметр ?. Даже если в user_id будет вредоносный код, он не выполнится, так как интерпретируется как строка, а не часть SQL-запроса.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
Django ORM — это инструмент для работы с базой данных, который позволяет взаимодействовать с ней через Python-код, не используя SQL напрямую. Он автоматически преобразует операции с объектами Python в SQL-запросы, упрощая управление данными и обеспечивая безопасность от SQL-инъекций.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
👉 Абстрактный класс — это класс, который не предназначен для создания экземпляров, а служит шаблоном для других классов. Он может содержать абстрактные методы (без реализации), которые должны быть переопределены в дочерних классах.


from abc import ABC, abstractmethod

class Animal(ABC):
@abstractmethod
def make_sound(self):
pass

class Dog(Animal):
def make_sound(self):
return "Woof!"

# Animal нельзя создать, Dog — можно
dog = Dog()
print(dog.make_sound()) # Вывод: Woof!


Абстрактный класс создается с использованием модуля abc. Класс наследуется от ABC, а методы помечаются декоратором @abstractmethod. Дочерние классы обязаны реализовать абстрактные методы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
Метод __hash__() используется для получения хэш-значения объекта. Хэш — это целое число, которое уникально идентифицирует объект во время его жизни (если объект неизменяемый). Хэширование позволяет объектам быть ключами в словарях или элементами множеств.

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

Пример реализации для пользовательского класса:


class Point:
def __init__(self, x, y):
self.x = x
self.y = y

def __hash__(self):
return hash((self.x, self.y))


Здесь хэш объекта Point вычисляется на основе кортежа из координат x и y. Это гарантирует, что объекты с одинаковыми координатами будут иметь одинаковый хэш. Если объект изменяемый, переопределять __hash__ не рекомендуется.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9💯1
Функция str() преобразует переданный объект в строковое представление, вызывая его метод __str__(). Она используется для получения читаемого текстового описания объекта, например, для вывода на экран или логирования.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🛑Локальная область видимости в Python ограничена функцией или блоком кода, где переменная определена. Переменные, созданные внутри функции, доступны только в этой функции и не видны за её пределами. При завершении функции локальные переменные уничтожаются.

Пример:


def example():
x = 10 # x — локальная переменная
print(x)

example()
print(x) # Ошибка: x не определена в глобальной области


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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3
Методы класса — это функции, определенные внутри класса, которые работают с атрибутами объекта или самого класса. Они могут быть вызваны на экземпляре класса или на самом классе, в зависимости от типа метода.

Обычные методы (instance methods) принимают первым аргументом self — ссылку на экземпляр класса. Вызываются через экземпляр:


class MyClass:
def instance_method(self):
return "This is an instance method"

obj = MyClass()
obj.instance_method() # Вызов метода


Методы класса (class methods) принимают cls — ссылку на класс. Декорируются @classmethod. Вызываются через класс или экземпляр:


class MyClass:
@classmethod
def class_method(cls):
return "This is a class method"

MyClass.class_method() # Вызов через класс


Статические методы (static methods) не принимают self или cls. Декорируются @staticmethod. Вызываются через класс или экземпляр:


class MyClass:
@staticmethod
def static_method():
return "This is a static method"

MyClass.static_method() # Вызов через класс


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🤔1
Для чтения бинарного файла используется функция open с режимом 'rb'. Данные считываются в виде байтов, которые затем можно обрабатывать или преобразовывать в нужный формат.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
➡️ Вложенные декораторы применяются к функции последовательно, начиная с самого внутреннего. Каждый декоратор принимает результат работы следующего за ним декоратора или исходной функции.


def decorator1(func):
def wrapper():
print("Decorator 1")
func()
return wrapper

def decorator2(func):
def wrapper():
print("Decorator 2")
func()
return wrapper

@decorator1
@decorator2
def my_function():
print("Original function")

my_function()


В этом примере сначала применяется decorator2, затем decorator1. При вызове my_function вывод будет:

Decorator 1
Decorator 2
Original function


Декораторы оборачивают функцию слоями, изменяя её поведение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
▶️ Для вставки элемента в список на определенную позицию используется метод insert.


my_list = [1, 2, 3, 4]
my_list.insert(2, 'new')
print(my_list) # [1, 2, 'new', 3, 4]


Первый аргумент — индекс, на который нужно вставить элемент. Второй аргумент — сам элемент. Если индекс выходит за пределы списка, элемент добавляется в конец.


my_list.insert(10, 'end')
print(my_list) # [1, 2, 'new', 3, 4, 'end']


Метод изменяет исходный список и не возвращает новое значение.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124
Словарь — это коллекция пар "ключ-значение", где доступ к элементам осуществляется по уникальному ключу. В отличие от списка, где элементы упорядочены и доступны по индексу, словарь не гарантирует порядок элементов и использует хэширование для быстрого доступа.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9💯2
Для создания таблицы в базе данных используется SQL-запрос CREATE TABLE.


CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);


В этом примере создается таблица users с тремя столбцами: id, username и email. id является первичным ключом с автоматическим инкрементом, username — обязательное поле, а email должно быть уникальным.


CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);


Вторая таблица orders создается с внешним ключом, который ссылается на столбец id таблицы users.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
Инкапсуляция — это принцип ООП, который позволяет скрыть внутреннюю реализацию объекта, предоставляя доступ только через определенные методы. В Python инкапсуляция реализуется с использованием приватных атрибутов и методов, которые обозначаются через двойное подчеркивание перед именем.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
Оператор in используется для проверки наличия элемента в последовательности (например, списке, строке, кортеже) или ключа в словаре. Возвращает True, если элемент найден, и False, если нет.


numbers = [1, 2, 3, 4, 5]
print(3 in numbers) # True, так как 3 есть в списке
print(6 in numbers) # False, так как 6 отсутствует


Также in применяется для проверки подстроки в строке:


text = "Hello, world!"
print("world" in text) # True, подстрока найдена


Для словарей in проверяет наличие ключа:


data = {"name": "Alice", "age": 25}
print("name" in data) # True, ключ существует


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍161
Функция isinstance() проверяет, является ли объект экземпляром указанного класса или кортежа классов. Функция issubclass() определяет, является ли один класс подклассом другого или кортежа классов.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
👉 Функция next() используется для получения следующего значения из генератора. При каждом вызове next() генератор выполняет код до ключевого слова yield и возвращает соответствующее значение. Если элементы закончились, вызывается исключение StopIteration.


def simple_generator():
yield 1
yield 2
yield 3

gen = simple_generator()
print(next(gen)) # 1, первое значение
print(next(gen)) # 2, второе значение
print(next(gen)) # 3, третье значение


Можно указать значение по умолчанию вторым аргументом, чтобы избежать исключения StopIteration:


print(next(gen, "No more items")) # No more items, элементы закончились


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
Функция enumerate() принимает итерируемый объект и возвращает итератор, который генерирует пары (индекс, элемент). Это позволяет одновременно получать индекс и значение элемента в цикле.


fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(index, fruit)


Результат:

0 apple
1 banana
2 cherry


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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
Модуль logging используется для записи сообщений разного уровня важности (DEBUG, INFO, WARNING, ERROR, CRITICAL) в лог. Он позволяет гибко настраивать формат вывода, уровень логирования и направление сообщений (в файл, консоль и т.д.), что делает его удобным для отладки и мониторинга приложений.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Функция int() преобразует переданное значение в целое число. Она может принимать строку, число с плавающей точкой или другой объект, поддерживающий преобразование в целое число. Если передаётся строка, можно указать систему счисления (по умолчанию — десятичная).


number = int("42") # Преобразует строку "42" в целое число 42
float_to_int = int(3.14) # Преобразует 3.14 в 3 (отбрасывает дробную часть)
binary = int("1010", 2) # Преобразует двоичную строку "1010" в число 10


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

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2
👉 Функция help() используется для получения справочной информации о модулях, классах, функциях и других объектах в Python. Она выводит документацию, доступную через docstring.


help(len) # Получить информацию о функции len
help(str) # Получить документацию по классу str


Если вызвать help() без аргументов, откроется интерактивный режим, где можно вводить названия объектов для получения справки. Это полезно для изучения встроенных модулей и функций, а также для проверки документации собственного кода.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103