Студия Питониста | Python

Студия Питониста | Python

@developmentlogs

В канале вы найдёте множество полезных материалов про Python: практичные статьи, увлекательные обучалки и ещё много чего.По вопросам и предложениям - @NeuroBot_ad.

123подписчиков
🇷🇺

Похожие каналы

Все →

Последние посты

🔗 Основы дескрипторов в Python — Часть 1▎ВведениеДескрипторы (descriptors) в Python — это механизм управления доступом к атрибутам объекта. Дескрипторы позволяют контролировать, что происходит при чтении, записи и удалении атрибутов класса. Если объект класса содержит один или несколько специальных методов: __get__, __set__ и __delete__, он считается дескриптором.Дескрипторы часто применяются в ORM, управлении доступом к свойствам и оптимизации работы с памятью.▎Механизм работы дескрипторовВ Python существуют два типа дескрипторов:1. Дескрипторы данных (data descriptors) — реализуют методы __get__ и __set__.2. Недельные дескрипторы (non-data descriptors) — реализуют только метод __get__.Дескрипторы управляют доступом к атрибутам, и их методы вызываются автоматически при попытке чтения, изменения или удаления атрибута.▎Методы дескрипторов1. __get__(self, instance, owner) — вызывается при чтении атрибута.2. __set__(self, instance, value) — вызывается при присвоении значения атрибуту.3. __delete__(self, instance) — вызывается при удалении атрибута.▎Как подставляются аргументы в методы дескриптораКогда вы обращаетесь к атрибуту объекта, который является дескриптором, Python автоматически подставляет необходимые аргументы:1. self — это сам объект-дескриптор.2. instance — это объект, из которого был вызван атрибут. Если атрибут вызван через класс, instance будет None.3. owner — это класс, из которого был вызван атрибут.▎Пример дескриптора данныхclass Celsius: def __get__(self, instance, owner): return instance._celsius def __set__(self, instance, value): if value < -273.15: raise ValueError("Температура ниже абсолютного нуля невозможна!") instance._celsius = valueclass Temperature: celsius = Celsius() def __init__(self, celsius): self.celsius = celsius# Пример использованияt = Temperature(25)print(t.celsius) # 25t.celsius = -300 # Ошибка: Температура ниже абсолютного нуля невозможна!В этом примере класс Celsius

29 авг. 2024 г.842В Telegram

⌛ Модуль time в Python: Полезные функции для работы со временемМодуль time в Python предоставляет функциональные возможности для работы с системным временем. В отличие от модуля datetime, который больше ориентирован на работу с датами и временем в высокоуровневом контексте, time предлагает более низкоуровневые операции, часто взаимодействующие напрямую с системными функциями.Основные функции1. time()Функция time() возвращает текущее время в секундах с начала эпохи (обычно это 1 января 1970 года). Результат — это число с плавающей точкой.Пример использования:import timecurrent_time = time.time()print(f"Текущее время в секундах: {current_time}")2. sleep()Функция sleep(seconds) приостанавливает выполнение программы на заданное количество секунд. Очень полезна для создания задержек, например, в циклах или для симуляции ожидания ответа. Функция синхронна.Пример:print("Ожидание 5 секунд...")time.sleep(5)print("Продолжение работы")3. ctime()Функция ctime() преобразует время в формате секунд с начала эпохи в более удобочитаемую строку.Пример:formatted_time = time.ctime(time.time())print(f"Текущее время: {formatted_time}")4. gmtime() и localtime()Эти функции преобразуют время в формате секунд с начала эпохи в структурированное время (struct_time).gmtime() возвращает время в формате UTC, а localtime() — локальное время.Пример:gmt = time.gmtime()local = time.localtime()print(f"UTC время: {gmt}")print(f"Локальное время: {local}")5. strftime()Эта функция форматирует объекты времени в строку по заданному шаблону.Пример:formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print(f"Форматированное локальное время: {formatted_time}")Здесь %Y, %m, %d и прочие — это специальные форматные символы для вывода года, месяца, дня и времени.6. strptime()Обратная функция к strftime(), которая парсит строку времени в объект struct_time по заданному формату.Пример:parsed_time = time.strptime("2024-08-24 15:30:00", "%Y-%m-%d %H:%M:%S")print(parsed_time)7. time.perf_counter() и tim

24 авг. 2024 г.327В Telegram

📗 Logging в Python - это механизм, который позволяет записывать информацию о работе программы во время её выполнения. Для использования logging в Python необходимо импортировать встроенный модуль logging. Прежде всего, нужно настроить логгер с помощью команды logging.basicConfig(), где можно указать уровень логирования, формат сообщений и другие параметры.Далее, для записи логов в различные уровни (например, отладочные сообщения или ошибки), используются соответствующие методы debug(), info(), warning(), error() и critical() объекта логгера.Пример использования:import logging# Настройка логгераlogging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')# Создание объекта логгераlogger = logging.getLogger(__name__)# Примеры записи логовlogger.debug('Это отладочное сообщение')logger.info('Это информационное сообщение')logger.warning('Это предупреждение')logger.error('Это сообщение об ошибке')logger.critical('Это критическое сообщение')После выполнения кода, вы сможете увидеть логи в консоли или сохранить их в файл для последующего анализа.Это был самый базовый разбор модуля. Ставьте реакцию, если хотите более глубокое изучение.P.S. Из «боевых» версий кода обязательно убирайте лигирование, оно применяется только при разработке/тестировании.#Обучение #Библиотека | #logging

22 авг. 2024 г.256В Telegram

Что такое Итераторы в Python?Итераторы в Python — это объекты, которые позволяют последовательно перебирать элементы коллекции, такие как список, множество или словарь. Они предоставляют интерфейс для итерирования, который состоит из метода __iter__, который возвращает сам итератор, и метода __next__, который возвращает следующий элемент коллекции.Пример использования итератора для списка:# Создаем списокnumbers = [1, 2, 3, 4, 5]# Создаем итераторiterator = iter(numbers)# Перебираем элементы списка с помощью итератораfor number in iterator: print(number)Этот код выведет числа от 1 до 5. Важно отметить, что после того, как все элементы будут перебраны, следующиnext__next__ вернет исключение StopIteration.Пример использования итератора для словаря:# Создаем словарьpeople = {'John': 30, 'Mary': 25, 'Peter': 40}# Создаем итераторiterator = iter(people)# Перебираем ключи словаря с помощью итератораfor key in iterator: print(key)Этот код выведет имена людей из словаря. Обратите внимание, что итератор для словаря перебирает только ключи, а не пары ключ-значение.#ЧтоТакое | #итераторы@X_Python

30 июл. 2024 г.352В Telegram

Что такое Генераторы в Python?Генераторы в Python — специальные функции, которые позволяют эффективно обрабатывать последовательности данных. Они похожи на обычные функции, но имеют некоторые особенности.Одна из главных особенностей генераторов заключается в том, что они могут быть использованы для создания итераторов. Итератор — это объект, который позволяет перебирать элементы последовательности без необходимости хранить все элементы в памяти одновременно. Это особенно полезно при работе с большими объемами данных.Вот пример синтаксиса генератора в Python:def generator_function(): for i in range(10): yield i * 2# Вывод значений, возвращаемых генераторомfor value in generator_function(): print(value)В этом примере generator_function является генератором, который создает последовательность чисел, удваивая каждое число от 0 до 9. Каждый раз, когда вызывается функция next() или используется в цикле for, генератор возвращает следующее значение в последовательности.Когда мы вызываем generator_function(), мы получаем генераторный объект, который может быть использован для получения значений. В данном случае, мы используем цикл for для перебора всех значений, возвращаемых генератором.Важно отметить, что генераторы в Python являются ленивыми, то есть они не вычисляют значения заранее, а создают их по мере необходимости. Это делает их очень эффективными для работы с большими объемами данных или для ситуаций, где данные не могут быть полностью загружены в память.#ЧтоТакое | #генераторы #итераторы@X_Python

23 июл. 2024 г.367В Telegram

Что такое Непрерывная интеграция (Continuous Integration, CI)?Непрерывная интеграция – это процесс разработки программного обеспечения, при котором разработчики часто объединяют свои изменения в общий репозиторий, автоматически собирают и тестируют код после каждого коммита. Это позволяет быстро обнаруживать и исправлять ошибки, а также поддерживать высокий уровень качества кода.Основные принципы непрерывной интеграции включают:1. Частые коммиты: разработчики должны регулярно коммитить свой код в общий репозиторий. Это помогает избежать накопления большого количества изменений, которые могут привести к конфликтам при слиянии.2. Автоматическое сборка и тестирование: после каждого коммита система CI должна автоматически собирать и тестировать код. Это позволяет быстро выявить ошибки и предотвратить их распространение на другие части системы.3. Обнаружение ошибок: система CI должна предоставлять информацию о том, какие тесты прошли успешно, а какие нет. Это помогает разработчикам быстро определить причину проблемы и исправить её.4. Регулярный выпуск: система CI должна позволять выпускать новые версии продукта на регулярной основе. Это помогает быстрее реагировать на изменения требований условного заказчика и улучшать качество продукта.5. Командная работа: непрерывная интеграция требует от команды разработчиков работать вместе, чтобы достичь общей цели. Каждый член команды должен понимать свою роль (капибара или супергерой) и ответственность в процессе разработки.6. Использование инструментов: для реализации непрерывной интеграции используются различные инструменты, такие как Jenkins, TeamCity, Travis CI и др. Они помогают автоматизировать процесс сборки и тестирования, а также предоставляют удобный интерфейс для управления процессом.Непрерывная интеграция является важным элементом гибкой методологии разработки ПО, такой как Scrum или Kanban. Она помогает ускорить процесс разработки, улучшить качество кода и повысить эффективность работы команды.💬 Также можете написать

22 июл. 2024 г.294В Telegram

📂 SQL: Создание таблицСоветуем перечитать этот пост, если не помните систему реляционных БД.Все данные в реляционных базах данных хранятся в виде таблиц. В одной БД нет ограничений на кол-во таблиц (в SQLite).Давайте научимся составлять SQL-запросы, которые позволят нам создавать таблицы:1. Т.к. мы хотим создать таблицу, давайте так и напишем: CREATE TABLE2. Далее мы должны указать имя таблицы и в скобках множество её столбцов:CREATE TABLE ChannelParticipant ( participant_id, time_joining)Мы создали таблицу с названием ChannelParticipant и двумя столбцами: participant_id и time_joining.3. Сейчас наш запрос не совсем корректный, т.к. у столбов мы не указали тип данных, который они могут содержать. Давайте исправим это:CREATE TABLE ChannelParticipant ( participant_id INTEGER, time_joining DATETIME)• INTEGER - тип данных для хранения целых чисел• DATETIME - тип данных для хранения даты и времениТеперь всё будет работать корректно.Также обращаем внимание, что для SQL регистр не важен (за исключением названий баз данных, таблиц и столбцов в них). Но принято ключевые слова SQL писать в верхнем регистре.Также не забывайте, что всё происходит в рамках Python. Саму базу данных мы научились создавать здесь.#Обучение #SQLite

21 июл. 2024 г.283В Telegram

😌 Отойдём от Python: Реляционные БДРеляционная модель базы данных - это наиболее популярный и широко используемый тип баз данных, который был разработан в 1970-х годах Эдгаром Коддом из университета Калифорнии. Основное отличие реляционной модели от других типов баз данных заключается в том, что она использует таблицы для хранения и управления данными.В реляционной модели данные представляют собой отношения между записями (строками) в таблице и полями (столбцами), которые описывают эти отношения. Каждая таблица имеет уникальное имя, а каждое поле имеет уникальное имя и тип данных.1. Основные понятия реляционной модели базы данных:• Таблица - это набор записей, хранящихся в виде строк.• Поле (столбец) - это отдельный компонент таблицы, содержит конкретную информацию о каждой записи.• Стояние (ячейка) - это индивидуальное значение поля для конкретной записи.• Отношение (ассоциация) - это связь между таблицами, которая устанавливается с помощью ключа.2. Ключевые понятия реляционной модели:• Ключ (primary key) - уникальный идентификатор для каждой записи в таблице, который отличает её от других записей.• Внешний ключ (foreign key) - ссылка на конкретную таблицу, которая связывает две таблицы.• Конкатенация (join) - операция, которая объединяет несколько таблиц по общему полю.3. Реляционные базы данных также используют понятия:• VIEW (представление) - виртуальная таблица, которая генерирует результат из запросов к основным таблицам.• INDEX (индекс) - структура данных, которая ускоряет доступ к определенным полевым значениям.На этом заканчивается теория реляционных баз данных (SQLite относится к ним). Далее только Structured Query Language.#Обучение #SQLite

20 июн. 2024 г.418В Telegram

🪢 SQLite: ФормальностиФормальности это лишь потому, что в обычном SQL подобных действий не требуется.Для начала импортируем встроенную библиотеку Python для взаимодействия с СУБД SQLite:import sqlite3Затем нам нужно указать, с каким файлом мы работаем (файл с нашей базой данных):import sqlite3conn = sqlite3.connect("database.db")Если файла не существует, он будет создан. Расширение файлов - ".db".Затем создадим специальный объект курсора, который впоследствии нам поможет отправлять запросы в нашу СУБД:import sqlite3conn = sqlite3.connect("database.db")cur = conn.cursor()Для того, чтобы непосредственно отправить любой SQL-запрос в нашу СУБД мы можем использовать метод execute() из объекта курсора:import sqlite3conn = sqlite3.connect("database.db")cur = conn.cursor()cur.execute("SQL-запрос в СУБД")Также рекомендуется обновлять БД после записей в неё:import sqlite3conn = sqlite3.connect("database.db")cur = conn.cursor()cur.execute("SQL-запрос в СУБД")conn.commit()По завершении работы закрываем соединение и курсор:import sqlite3conn = sqlite3.connect("database.db")cur = conn.cursor()cur.execute("SQL-запрос в СУБД")conn.commit()cur.close()conn.close()На этом «формальности» заканчиваются, в следующих уроках уже коснёмся темы непосредственно самого SQL (structured query language).#Обучение #SQLite

16 июн. 2024 г.381В Telegram

📜 СУБД SQLiteЯвляется одной из самых популярных систем управления базами данных в Python, идеально подходит для относительно небольших проектов. Она достаточно проста, а также кроссплатформенна. Важная (и удобная) особенность — SQLite хранит БД на диске в виде файла. Это означает, что вам не обязательно устанавливать СУБД на сервер и общаться с ней через клиента (как это делают большинство других СУБД).Взаимодействие с SQLite происходит в Python через специальную встроенную библиотеку:import sqlite3👌 В ближайшее время мы рассмотрим возможность использования всех функций этой СУБД в канале под хештегом #SQLite.💬 Если у вас есть какие-то конкретные пожелания по изучению, то напишите их в комментариях под этим постом. Обязательно обсудим!

14 июн. 2024 г.332В Telegram

🚀 Путешествие в неизведанные уголки Python: Магия или Наука?Сегодня мы отправляемся в небольшое, но увлекательное путешествие по некоторым из самых необычных и малоизвестных функций этого языка.1. import(): Функция, которую вы не искали, но которая нашла васВы когда-либо задумывались о том, как Python загружает модули во время выполнения? Именно здесь и приходит на помощь функция import(). Она позволяет динамически импортировать модули, основываясь на данных, полученных во время выполнения программы. Это может быть очень полезно в определенных ситуациях, например, при создании универсальных скриптов, которые должны работать с различными модулями.2. Декораторы: Скрытые возможности для изменения поведения функций (вдруг они плохо себя ведут?)Декораторы - это одна из самых уникальных особенностей Python. Они позволяют добавить дополнительный функционал к существующим функциям без изменения их исходного кода. Это идеальный инструмент для повторного использования кода, управления доступом, логирования и многого другого.3. *args и **kwarg: Секрет небывалой гибкости ваших функцийВы когда-нибудь сталкивались с ситуацией, когда не знали заранее, сколько аргументов будет передано в вашу функцию? Здесь на помощь приходят *args и **kwargs. Эти специальные синтаксические конструкции позволяют вашим функциям принимать произвольное количество позиционных и именованных аргументов соответственно.«Python полон удивительных возможностей, которые делают его таким особенным» — вечная фраза.💬 Поделитесь своими любимыми нестандартными функциями Python в комментариях ниже!#Полезно | #теория #путешествие_Python #нестандартные_функции

6 июн. 2024 г.387В Telegram

🤔 Задачка "Таинственная функция" Напишите функцию modify_list(lst), которая получает на вход список чисел и модифицирует его следующим образом: если элемент списка чётный, то он умножается на 2, если нечётный — удаляется из списка. Функция должна модифицировать…💡Задачу "Таинственная функция" верно решили:1. @npo_HAC2. @KLACHERS_WHILE@KLACHERS_WHILE предложил решение на 1 строку короче, чем @npo_HAC. Но на сколько это значимо для программистов на Python?...#Задача

1 июн. 2024 г.379В Telegram

💫 List Comprehensions• ТеорияList Comprehensions в Python – это компактный способ создания списков на основе существующего списка или другого итерируемого объекта. Они позволяют вам выполнить преобразование каждого элемента, а также отфильтровать элементы по определенному условию, всё в одной строке кода.Базовая структура List Comprehension выглядит следующим образом:[expression for item in iterable if condition]1. Expression. Это выражение, которое будет применяться к каждому элементу item из итерируемого объекта iterable. Результат этого выражения будет добавлен в новый список.2. Item. Это переменная, которая представляет текущий элемент в процессе итерации.3. Iterable. Это список, кортеж, множество, словарь, генератор или любой другой итерируемый объект, по которому происходит итерация.4. Condition (необязательно). Это дополнительное логическое выражение, которое проверяется для каждого элемента. Если оно истинно, то элемент включается в результат; если ложно, то пропускается.• Практические примеры1. Создание списка квадратов всех чисел из диапазона:squares = [x**2 for x in range(1, 6)]print(squares) # Вывод: [1, 4, 9, 16, 25]2. Фильтрация четных чисел из списка:numbers = [1, 2, 3, 4, 5, 6]even_numbers = [num for num in numbers if num % 2 == 0]print(even_numbers) # Вывод: [2, 4, 6]3. Преобразование строк в нижний регистр из списка строк:strings = ['Hello', 'WORLD', 'Python']lowercase_strings = [s.lower() for s in strings]print(lowercase_strings) # Вывод: ['hello', 'world', 'python']List Comprehensions не только делают код более читаемым и компактным, но и обычно работают быстрее, чем циклы for с операторами append, благодаря внутренней оптимизации в Python.Однако, для очень сложных логических конструкций или когда читаемость кода страдает, может быть предпочтительнее использовать обычные циклы. Бывает и так.#Обучение | #теория #практика #списки

29 мая 2024 г.347В Telegram

🧩 Понимание функций в Python: Основы и примерыОдной из ключевых концепций в Python являются функции. В этом посте мы рассмотрим, что такое функции в Python, как они работают, зачем они нужны, и как их можно использовать для эффективного решения прогерских задач.• Что такое функция?Функция в Python — это некий блок кода, который выполняет определённую задачу. Функции помогают разделить программу на маленькие, управляемые части, что упрощает понимание и поддержку кода. Кроме того, функции позволяют избежать дублирования кода, что делает программы более короткими и эффективными.• Определение и вызов функцийДля создания функции в Python используется ключевое слово def, после которого следует имя функции и круглые скобки. В скобках можно указать параметры, которые функция будет принимать. Тело функции начинается с новой строки и должно иметь отступ.Пример простой функции:def greet(name): print("Привет, " + name + "!")Вызов функции осуществляется путём указания её имени с соответствующими аргументами в скобках:greet("Алексей")• Параметры и аргументыПараметры функции — это переменные, которые перечислены в определении функции и используются в теле функции для выполнения операций. Аргументы — это значения, которые передаются функции при её вызове.Функции могут принимать различные типы параметров:- Позиционные параметры: значения должны соответствовать по порядку параметрам, объявленным в функции.- Ключевые параметры: при вызове функции значения присваиваются параметрам по их имени.- Параметры со значениями по умолчанию: позволяют указать для параметра начальное значение, которое будет использоваться, если при вызове функции значение не предоставлено.- Переменное число параметров: используются, когда функция должна принимать произвольное число аргументов.• Возвращение значенийФункции в Python могут возвращать значения с помощью ключевого слова return. Возвращаемое значение может быть любого типа данных.Пример функции, возвращающей результат:def add(a, b): return a + b

22 мая 2024 г.369В Telegram

💯 Сегодня поговорим о плагинах в PyCharmPyCharm сегодня предлагает широкий спектр плагинов, которые могут значительно улучшить вашу разработку на языке Python. Но к сожалению, многие начинающие программисты их не используют, что сказывается на их продуктивности не в лучшую сторону.Некоторые из наиболее полезных плагинов включают:1. PyCharm Profiler: Этот плагин предоставляет инструменты для профилирования вашего кода, помогая оптимизировать его производительность.2. PyCharm Test Runner: Этот плагин предоставляет удобный интерфейс для запуска и отладки тестов, написанных с использованием различных фреймворков тестирования, таких как unittest, pytest и др.3. PyCharm Django Support: Если вы работаете с фреймворком Django, этот плагин предоставляет дополнительные функции, такие как автодополнение кода, проверка синтаксиса, отладка и многое другое.4. PyCharm Scientific Package Support: Этот плагин предоставляет поддержку для научных пакетов, таких как NumPy, SciPy, Pandas и Matplotlib, с возможностью автодополнения кода, отладки и другими удобными функциями.5. Tabnine: Этот плагин использует искусственный интеллект для предложения подсказок кода и автодополнения. Он обучается на основе вашего кода и других проектов, что делает предложения более точными и полезными. Рекомендуется для улучшения производительности при написании кода.Установка плагинов в PyCharm происходит через настройки IDE. Вы можете найти и установить плагины, перейдя в "File" > "Settings" (для Windows и Linux) или "PyCharm" > "Preferences" (для macOS), выбрав раздел "Plugins" и нажав кнопку "Marketplace". Затем найдите нужный плагин в списке и нажмите кнопку "Install".В списке 5 плагинов, которые мы можем порекомендовать для использования. Tabnine отдельно выделен не случайно - это очень полезная вещь.#Полезно | #трюки #рекомендация #продуктивность

20 мая 2024 г.306В Telegram