Python | Вопросы собесов
13.9K subscribers
36 photos
1 file
926 links
Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp

Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky
Download Telegram
🤔 Что знаешь про два основных типа данных Python?

Основные типы данных Python — изменяемые (списки, множества, словари) и неизменяемые (строки, числа, кортежи). Изменяемые можно модифицировать после создания, тогда как неизменяемые остаются неизменными.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥1💊1
🤔 Что такое абстрактный метод?

Это метод, который объявлен в абстрактном классе, но не имеет собственной реализации. Абстрактные методы предназначены для того, чтобы подклассы, наследующие абстрактный класс, обязательно реализовали эти методы. Абстрактные методы создаются с использованием модуля abc (Abstract Base Classes).

🚩Основные моменты

🟠Абстрактный метод
Метод, который объявлен в абстрактном классе и должен быть реализован в подклассах.
🟠Абстрактный класс
Класс, содержащий один или более абстрактных методов. Такие классы не могут быть инстанцированы напрямую.
🟠Использование модуля `abc`
Для создания абстрактных методов и классов.

🚩Пример создания

🟠Импорт модуля `abc`
Импортируем необходимые классы и декораторы.
🟠Создание абстрактного класса
Наследуемся от ABC.
🟠Определение абстрактного метода
Используем декоратор @abstractmethod.

from abc import ABC, abstractmethod

# Создание абстрактного класса
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass

# Попытка создания экземпляра абстрактного класса приведет к ошибке
# animal = Animal() # TypeError: Can't instantiate abstract class Animal with abstract methods make_sound

# Создание подклассов, которые реализуют абстрактные методы
class Dog(Animal):
def make_sound(self):
return "Woof!"

class Cat(Animal):
def make_sound(self):
return "Meow!"

# Теперь можно создать экземпляры подклассов
dog = Dog()
print(dog.make_sound()) # Woof!

cat = Cat()
print(cat.make_sound()) # Meow!


🚩Основные моменты, которые стоит учитывать

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

🚩Плюсы

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Что такое Docker?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
🤔 Виды наследования?

В объектно-ориентированном программировании наследование позволяет одному классу (называемому подклассом или наследником) унаследовать атрибуты и методы другого класса (называемого суперклассом или родительским классом).

🟠Одиночное наследование (Single Inheritance)
Одиночное наследование — это когда класс наследует только один родительский класс.
class Animal:
def speak(self):
return "Some sound"

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

dog = Dog()
print(dog.speak()) # Woof!


🟠Множественное наследование (Multiple Inheritance)
Множественное наследование — это когда класс наследует несколько родительских классов.
class Animal:
def eat(self):
return "Eating"

class Pet:
def play(self):
return "Playing"

class Dog(Animal, Pet):
def speak(self):
return "Woof!"

dog = Dog()
print(dog.eat()) # Eating
print(dog.play()) # Playing
print(dog.speak()) # Woof!


🟠Многоуровневое наследование (Multilevel Inheritance)
Многоуровневое наследование — это когда класс наследует другой класс, который в свою очередь наследует другой класс.
class Animal:
def eat(self):
return "Eating"

class Mammal(Animal):
def walk(self):
return "Walking"

class Dog(Mammal):
def speak(self):
return "Woof!"

dog = Dog()
print(dog.eat()) # Eating
print(dog.walk()) # Walking
print(dog.speak()) # Woof!


🟠Иерархическое наследование (Hierarchical Inheritance)
Иерархическое наследование — это когда несколько классов наследуют один и тот же родительский класс.
class Animal:
def speak(self):
return "Some sound"

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

class Cat(Animal):
def speak(self):
return "Meow!"

dog = Dog()
cat = Cat()
print(dog.speak()) # Woof!
print(cat.speak()) # Meow!


🟠Гибридное наследование (Hybrid Inheritance)
Гибридное наследование — это комбинация двух или более типов наследования. Это может быть сложная структура, включающая одиночное, множественное, многоуровневое и иерархическое наследование.
class Animal:
def eat(self):
return "Eating"

class Mammal(Animal):
def walk(self):
return "Walking"

class Bird(Animal):
def fly(self):
return "Flying"

class Bat(Mammal, Bird):
def use_sonar(self):
return "Using sonar"

bat = Bat()
print(bat.eat()) # Eating
print(bat.walk()) # Walking
print(bat.fly()) # Flying
print(bat.use_sonar()) # Using sonar


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Что такое git?

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

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2💊2
🤔 Что такое SDLC?

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

🚩Основные этапы SDLC

🟠Планирование и анализ требований (Planning and Requirements Analysis)
На этом этапе определяются цели проекта, анализируются потребности и требования к системе. Включает сбор требований от заинтересованных сторон, анализ бизнес-процессов и создание документации с описанием требований.
Встречи с клиентами и пользователями для определения функций системы. Документирование функциональных и нефункциональных требований.

🟠Проектирование (Design)
На этапе проектирования разрабатывается архитектура системы и ее компоненты. Создаются технические спецификации, включая схемы базы данных, диаграммы классов и интерфейсов, а также детализируется план реализации.Разработка диаграмм UML.Создание прототипов пользовательского интерфейса.Проектирование архитектуры системы.

🟠Разработка (Implementation or Coding)
На этом этапе осуществляется непосредственная разработка программного обеспечения на основе спецификаций, созданных на предыдущем этапе. Кодирование выполняется в соответствии с выбранными языками программирования и инструментами разработки. Написание кода для модулей и компонентов системы. Интеграция различных компонентов системы. Регулярное использование систем контроля версий (например, Git).

🟠Тестирование (Testing)
Этап тестирования включает проверку и валидацию системы для обнаружения и исправления ошибок. Тестирование проводится в различных формах, включая юнит-тестирование, интеграционное тестирование, системное тестирование и приемочное тестирование. Автоматизированное тестирование с использованием фреймворков, таких как pytest или JUnit. Ручное тестирование функциональности и пользовательского интерфейса. Тестирование производительности и безопасности.

🟠Развертывание (Deployment)
На этом этапе программное обеспечение разворачивается в рабочей среде и становится доступным пользователям. Включает настройку серверов, развертывание баз данных и настройку инфраструктуры. Развертывание на облачных платформах, таких как AWS или Azure. Настройка и конфигурация серверов и сетей. Миграция данных и начальная загрузка данных.

🟠Поддержка и сопровождение (Maintenance)
Этап поддержки и сопровождения включает в себя обслуживание и улучшение системы после ее развертывания. Включает исправление ошибок, обновление функциональности и оптимизацию производительности. Обновление системы безопасности. Внесение изменений на основе отзывов пользователей. Обслуживание серверов и баз данных.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
🤔 Что такое изоморфное приложение?

Это веб-приложение, в котором как клиентская, так и серверная часть используют один и тот же код, обычно написанный на JavaScript или TypeScript. Это позволяет рендерить страницы на сервере и на клиенте, улучшая производительность и SEO.

🚩Основные преимущества изоморфных приложений

🟠Улучшенная производительность
Первоначальный рендеринг выполняется на сервере, что уменьшает время загрузки и улучшает пользовательский опыт, особенно на медленных соединениях.
🟠Лучший SEO
Поисковые системы лучше индексируют страницы, которые уже отрендерены на сервере, что улучшает SEO по сравнению с чисто клиентскими приложениями.
🟠Повышенная удобочитаемость кода
Использование одного и того же кода как на клиенте, так и на сервере упрощает поддержку и развитие приложения.

🚩Как работает изоморфное приложение

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

🟠Гидратация (Hydration)
После получения HTML от сервера, клиентская часть "гидратирует" (или "активирует") рендеренные элементы, добавляя интерактивность с помощью JavaScript. Это позволяет приложениям работать как одностраничные приложения (SPA) после начальной загрузки.

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

🚩Пример изоморфного приложения с использованием React и Next.js

Установка Next.js
npx create-next-app@latest my-isomorphic-app
cd my-isomorphic-app
npm run dev


Создание страницы с серверным рендерингом
// pages/index.js
import React from 'react';

const Home = ({ message }) => (
<div>
<h1>{message}</h1>
</div>
);

export async function getServerSideProps() {
return {
props: {
message: 'Hello from the server!',
},
};
}

export default Home;


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие основные HTTP методы знаешь?

Основные методы: GET для получения данных, POST для отправки данных, PUT для обновления или создания ресурса, DELETE для удаления. Также используются PATCH для частичного обновления, HEAD для получения заголовков и OPTIONS для определения доступных методов.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5
🤔 Что такое SRP?

Это один из пяти принципов SOLID, которые формулируют правила для написания чистого и поддерживаемого кода в объектно-ориентированном программировании. Согласно SRP, класс или модуль должен иметь только одну причину для изменения, что означает, что он должен выполнять только одну задачу или иметь одну ответственность.

🚩Основные аспекты

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

🚩Пример нарушения

class User:
def __init__(self, name, email):
self.name = name
self.email = email

def save(self):
# Сохранение данных пользователя в базу данных
print(f"Saving user {self.name} to the database.")

def send_welcome_email(self):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {self.email}.")


🚩Пример соблюдения

Для соблюдения принципа SRP разделим класс User на два отдельных класса: один для управления данными пользователя, другой для отправки сообщений электронной почты.
class User:
def __init__(self, name, email):
self.name = name
self.email = email

class UserRepository:
def save(self, user):
# Сохранение данных пользователя в базу данных
print(f"Saving user {user.name} to the database.")

class EmailService:
def send_welcome_email(self, user):
# Отправка приветственного сообщения на электронную почту
print(f"Sending welcome email to {user.email}.")

# Использование классов
user = User("Alice", "alice@example.com")
user_repository = UserRepository()
email_service = EmailService()

user_repository.save(user)
email_service.send_welcome_email(user)


🚩Плюсы

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Что знаешь про ORM?

ORM (Object-Relational Mapping) — это технология, которая позволяет работать с реляционными базами данных через объектно-ориентированные модели. Она автоматически преобразует объекты в SQL-запросы и обратно, упрощая работу с данными. Популярные ORM включают Hibernate, SQLAlchemy и Django ORM.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
🤔 Какие есть 6 этапов разработки продукта?

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

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

🟠Проектирование
На этапе проектирования создается архитектура будущего продукта. Это включает:
Разработка высокоуровневой архитектуры системы.
Детальное проектирование отдельных компонентов и модулей.
Создание схем баз данных, диаграмм классов и других архитектурных диаграмм.
Разработка прототипов пользовательского интерфейса.

🟠Разработка (кодирование)
Этот этап включает в себя непосредственное написание кода и реализацию функциональности согласно разработанным спецификациям и проектам. Включает:
Разработка модулей и компонентов системы.
Интеграция различных частей системы.
Использование систем контроля версий для управления кодом.
Постоянная проверка кода на соответствие стандартам и требованиям.

🟠Тестирование
Тестирование необходимо для обеспечения качества продукта и выявления ошибок до его развертывания. Включает:
Юнит-тестирование отдельных компонентов.
Интеграционное тестирование для проверки взаимодействия компонентов.
Системное тестирование для проверки всей системы в целом.
Приемочное тестирование для проверки соответствия требованиям клиента.

🟠Развертывание
На этапе развертывания продукт готовится к запуску и становится доступным пользователям. Включает:
Настройка серверов и инфраструктуры.
Развертывание приложений в производственной среде.
Проведение окончательных проверок и тестов в реальной среде.
Подготовка и выпуск документации для пользователей и администраторов.

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
🤔 Что такое транзакция?

Транзакция — это набор операций с базой данных, выполняющихся как единое целое. Она гарантирует выполнение принципов ACID (атомарность, согласованность, изолированность, долговечность). При сбое все изменения откатываются.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Что такое кастомный менеджер модели?

В Django, кастомный менеджер модели — это способ расширения стандартного менеджера модели (класса Manager), чтобы добавить дополнительные методы для выполнения более сложных запросов к базе данных. Менеджеры используются для работы с наборами запросов (QuerySets) и предоставляют интерфейс для выполнения операций с базой данных.

🚩Зачем использовать кастомный менеджер модели?

🟠Повторное использование кода
Вынесение часто используемых запросов в методы менеджера позволяет избежать дублирования кода.

🟠Организация логики запросов
Логика сложных запросов инкапсулируется в методы менеджера, делая код моделей и представлений более чистым и удобочитаемым.

🟠Расширение функциональности
Добавление новых методов к менеджеру позволяет выполнять специфичные для приложения операции с данными.

🚩Пример создания кастомного менеджера модели

1⃣Создание кастомного менеджера
from django.db import models
from django.utils import timezone

class BookManager(models.Manager):
def by_author(self, author_name):
return self.filter(author__name=author_name)

def published_recently(self):
one_month_ago = timezone.now() - timezone.timedelta(days=30)
return self.filter(publication_date__gte=one_month_ago)


2⃣Использование кастомного менеджера в модели
from django.db import models

class Author(models.Model):
name = models.CharField(max_length=100)

class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publication_date = models.DateTimeField()

# Подключение кастомного менеджера
objects = BookManager()


3⃣Пример использования кастомного менеджера
# Получение книг по автору
books_by_author = Book.objects.by_author('John Doe')
for book in books_by_author:
print(book.title)

# Получение книг, опубликованных за последний месяц
recent_books = Book.objects.published_recently()
for book in recent_books:
print(book.title)


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🤔 Что быстрее, словарь или список?

Словарь быстрее для поиска элементов (O(1) в среднем) по сравнению со списком, где поиск занимает O(n).

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5
🤔 Какие бывают поля моделей в Django?

Это класс, который представляет структуру и логику данных приложения. Модели определяют поля и поведение данных, которые будут храниться в базе данных. Django предоставляет множество типов полей и встроенных методов для создания мощных и гибких моделей.

🚩Основные типы полей в моделях Django

🟠Поле AutoField
Поле для автоматического увеличения целого числа, которое обычно используется для первичных ключей.
id = models.AutoField(primary_key=True)    


🟠Поле CharField
Поле для хранения строк с фиксированной максимальной длиной.
name = models.CharField(max_length=100)    


🟠Поле TextField
Поле для хранения длинных текстов.
description = models.TextField()    


🟠Поле IntegerField
Поле для хранения целых чисел.
age = models.IntegerField()    


🟠Поле FloatField
Поле для хранения чисел с плавающей запятой.
price = models.FloatField()    


🟠Поле BooleanField
Поле для хранения булевых значений (True/False).
is_active = models.BooleanField(default=True)    


🟠Поле DateTimeField
Поле для хранения даты и времени.
created_at = models.DateTimeField(auto_now_add=True)    


🟠Поле ForeignKey
Поле для создания связи "многие к одному" с другой моделью.
author = models.ForeignKey('Author', on_delete=models.CASCADE)    


🟠Поле ManyToManyField
Поле для создания связи "многие ко многим" с другой моделью.
categories = models.ManyToManyField('Category')    


🟠Поле OneToOneField
Поле для создания связи "один к одному" с другой моделью.
profile = models.OneToOneField('Profile', on_delete=models.CASCADE)    


Ставь
👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Что такое IP адрес и доменное имя?

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

🚩IP-адрес (Internet Protocol Address)

Это уникальный числовой идентификатор, присваиваемый каждому устройству, подключенному к сети, использующей протокол IP (Internet Protocol). IP-адреса используются для маршрутизации пакетов данных между устройствами в сети.

🟠IPv4 (Internet Protocol version 4)
Формат: 32-битные числа, записанные в виде четырех десятичных чисел, разделенных точками (например, 192.168.1.1). Пример: 192.168.0.1, 8.8.8.8

🟠IPv6 (Internet Protocol version 6)
Формат: 128-битные числа, записанные в виде восьми групп шестнадцатеричных чисел, разделенных двоеточиями (например, 2001:0db8:85a3:0000:0000:8a2e:0370:7334). Пример: 2001:0db8:85a3:0000:0000:8a2e:0370:7334, ::1 (loopback адрес)

🚩Доменное имя

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

🟠Top-Level Domain (TLD)
Верхний уровень, например, .com, .org, .net.
🟠Second-Level Domain (SLD)
Основная часть доменного имени, например, example в example.com.
🟠Subdomain
Дополнительные уровни, например, www в www.example.com.

🚩Преобразование доменных имен в IP-адреса

Для преобразования доменных имен в IP-адреса используется система доменных имен (DNS, Domain Name System). DNS-серверы выполняют роль "телефонной книги" интернета, переводя доменные имена в соответствующие им IP-адреса.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Что такое querySet() в Django?

Это объект в Django ORM, представляющий запрос к базе данных. Он позволяет фильтровать, сортировать и манипулировать данными, возвращаемыми из базы. Например, Model.objects.all() возвращает QuerySet, содержащий все объекты модели, а filter() позволяет извлекать только нужные данные.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥1
🤔 Что такое интроспекция?

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

🚩Основные аспекты интроспекции

🟠Получение типа объекта
С помощью функции type() можно узнать тип любого объекта.
x = 10
print(type(x)) # <class 'int'>


🟠Проверка наличия атрибутов и методов
Функции hasattr(), getattr() и setattr() позволяют проверять и манипулировать атрибутами объектов.
class MyClass:
def __init__(self, value):
self.value = value

obj = MyClass(5)

# Проверка наличия атрибута
print(hasattr(obj, 'value')) # True

# Получение значения атрибута
print(getattr(obj, 'value')) # 5

# Установка значения атрибута
setattr(obj, 'value', 10)
print(getattr(obj, 'value')) # 10


🟠Исследование структуры класса
Модуль inspect предоставляет функции для получения информации о классах, методах и функциях.
import inspect

class MyClass:
def method(self):
pass

# Получение всех методов класса
methods = inspect.getmembers(MyClass, predicate=inspect.isfunction)
print(methods) # [('method', <function MyClass.method at 0x...>)]


🟠Список атрибутов и методов объекта
Встроенная функция dir() возвращает список всех атрибутов и методов объекта.
class MyClass:
def method(self):
pass

obj = MyClass()

print(dir(obj))
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__',
# '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'method']


🟠Работа с модулем `inspect`
Модуль inspect предоставляет функции для получения информации о живых объектах, включая функции, методы, классы и модули.
import inspect

def my_function():
pass

# Получение информации о функции
print(inspect.getmembers(my_function))


🚩Плюсы и минусы

Гибкость
Позволяет писать более общие и гибкие функции, которые могут работать с различными типами данных.
Отладка и тестирование
Облегчает отладку и тестирование кода, предоставляя средства для анализа объектов и их состояния.
Сложность
Может сделать код более сложным для понимания и сопровождения.
Производительность
Интроспекция может повлиять на производительность, особенно при частом использовании в критически важных участках кода.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🤔 Что такое BigO notation?

Это способ оценки эффективности алгоритмов в терминах времени выполнения или использования памяти в зависимости от размера входных данных.
•Например: O(1) (константное время), O(n) (линейное), O(log n) (логарифмическое).
Она помогает сравнивать алгоритмы и выбирать наиболее оптимальный для конкретной задачи.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥2
🤔 Что такое JSON?

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

🚩Основные характеристики

🟠Простота и легкость
JSON простой и легкий для понимания, что делает его удобным для обмена данными.

🟠Является текстовым форматом
JSON представлен в текстовом формате, что позволяет легко его читать и отлаживать.

🟠Язык-независимость
Хотя JSON основан на подмножестве языка JavaScript, он поддерживается многими языками программирования, включая Python, Java, C#, PHP и другие.

🚩JSON состоит из двух основных структур

🟠Объекты
Набор пар "ключ-значение", заключенный в фигурные скобки {}. Ключи должны быть строками, а значения могут быть различными типами данных.
🟠Массивы
Упорядоченные списки значений, заключенные в квадратные скобки [].
{
"name": "John Doe",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
}
}


🚩Типы данных

🟠Строки
Последовательности символов, заключенные в двойные кавычки.
"name": "John Doe"    


🟠Числа
Целые числа и числа с плавающей запятой.
"age": 30    


🟠Булевы значения
true или false.
"isStudent": false    


🟠Массивы
Упорядоченные списки значений.
"courses": ["Math", "Science", "History"]    


🟠Объекты
Наборы пар "ключ-значение".
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
}


🟠Null
Значение null.
"middleName": null    


Преобразование Python объектов в JSON (сериализация)
import json

data = {
"name": "John Doe",
"age": 30,
"isStudent": False,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
}
}

# Преобразование Python объекта в JSON строку
json_string = json.dumps(data, indent=4)
print(json_string)


Преобразование JSON в Python объекты (десериализация)
import json

json_string = '''
{
"name": "John Doe",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
}
}
'''

# Преобразование JSON строки в Python объект
data = json.loads(json_string)
print(data)
print(data['name']) # John Doe


🚩Пример чтения и записи JSON в файл

Запись JSON в файл
import json

data = {
"name": "John Doe",
"age": 30,
"isStudent": False,
"courses": ["Math", "Science", "History"],
"address": {
"street": "123 Main St",
"city": "Anytown",
"zip": "12345"
}
}

with open('data.json', 'w') as file:
json.dump(data, file, indent=4)


Чтение JSON из файла
import json

with open('data.json', 'r') as file:
data = json.load(file)
print(data)
print(data['name']) # John Doe


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155