🚀 Путешествие в неизведанные уголки Python: Магия или Наука?
Сегодня мы отправляемся в небольшое, но увлекательное путешествие по некоторым из самых необычных и малоизвестных функций этого языка.
1. import(): Функция, которую вы не искали, но которая нашла вас
Вы когда-либо задумывались о том, как Python загружает модули во время выполнения? Именно здесь и приходит на помощь функция import(). Она позволяет динамически импортировать модули, основываясь на данных, полученных во время выполнения программы.
Это может быть очень полезно в определенных ситуациях, например, при создании универсальных скриптов, которые должны работать с различными модулями.
2. Декораторы: Скрытые возможности для изменения поведения функций (вдруг они плохо себя ведут?)
Декораторы - это одна из самых уникальных особенностей Python. Они позволяют добавить дополнительный функционал к существующим функциям без изменения их исходного кода.
Это идеальный инструмент для повторного использования кода, управления доступом, логирования и многого другого.
3. *args и **kwarg: Секрет небывалой гибкости ваших функций
Вы когда-нибудь сталкивались с ситуацией, когда не знали заранее, сколько аргументов будет передано в вашу функцию?
Здесь на помощь приходят *args и **kwargs. Эти специальные синтаксические конструкции позволяют вашим функциям принимать произвольное количество позиционных и именованных аргументов соответственно.
«Python полон удивительных возможностей, которые делают его таким особенным» — вечная фраза.
💬 Поделитесь своими любимыми нестандартными функциями Python в комментариях ниже!
#Полезно | #теория #путешествие_Python #нестандартные_функции
Сегодня мы отправляемся в небольшое, но увлекательное путешествие по некоторым из самых необычных и малоизвестных функций этого языка.
1. import(): Функция, которую вы не искали, но которая нашла вас
Вы когда-либо задумывались о том, как Python загружает модули во время выполнения? Именно здесь и приходит на помощь функция import(). Она позволяет динамически импортировать модули, основываясь на данных, полученных во время выполнения программы.
Это может быть очень полезно в определенных ситуациях, например, при создании универсальных скриптов, которые должны работать с различными модулями.
2. Декораторы: Скрытые возможности для изменения поведения функций (вдруг они плохо себя ведут?)
Декораторы - это одна из самых уникальных особенностей Python. Они позволяют добавить дополнительный функционал к существующим функциям без изменения их исходного кода.
Это идеальный инструмент для повторного использования кода, управления доступом, логирования и многого другого.
3. *args и **kwarg: Секрет небывалой гибкости ваших функций
Вы когда-нибудь сталкивались с ситуацией, когда не знали заранее, сколько аргументов будет передано в вашу функцию?
Здесь на помощь приходят *args и **kwargs. Эти специальные синтаксические конструкции позволяют вашим функциям принимать произвольное количество позиционных и именованных аргументов соответственно.
«Python полон удивительных возможностей, которые делают его таким особенным» — вечная фраза.
💬 Поделитесь своими любимыми нестандартными функциями Python в комментариях ниже!
#Полезно | #теория #путешествие_Python #нестандартные_функции
📜 СУБД SQLite
Является одной из самых популярных систем управления базами данных в Python, идеально подходит для относительно небольших проектов. Она достаточно проста, а также кроссплатформенна.
Важная (и удобная) особенность — SQLite хранит БД на диске в виде файла. Это означает, что вам не обязательно устанавливать СУБД на сервер и общаться с ней через клиента (как это делают большинство других СУБД).
Взаимодействие с SQLite происходит в Python через специальную встроенную библиотеку:
👌 В ближайшее время мы рассмотрим возможность использования всех функций этой СУБД в канале под хештегом #SQLite.
💬 Если у вас есть какие-то конкретные пожелания по изучению, то напишите их в комментариях под этим постом. Обязательно обсудим!
Является одной из самых популярных систем управления базами данных в Python, идеально подходит для относительно небольших проектов. Она достаточно проста, а также кроссплатформенна.
Важная (и удобная) особенность — SQLite хранит БД на диске в виде файла. Это означает, что вам не обязательно устанавливать СУБД на сервер и общаться с ней через клиента (как это делают большинство других СУБД).
Взаимодействие с SQLite происходит в Python через специальную встроенную библиотеку:
import sqlite3
👌 В ближайшее время мы рассмотрим возможность использования всех функций этой СУБД в канале под хештегом #SQLite.
💬 Если у вас есть какие-то конкретные пожелания по изучению, то напишите их в комментариях под этим постом. Обязательно обсудим!
👍6 2
🪢 SQLite: Формальности
Формальности это лишь потому, что в обычном SQL подобных действий не требуется.
Для начала импортируем встроенную библиотеку Python для взаимодействия с СУБД SQLite:
Затем нам нужно указать, с каким файлом мы работаем (файл с нашей базой данных):
Если файла не существует, он будет создан. Расширение файлов - ".db".
Затем создадим специальный объект курсора, который впоследствии нам поможет отправлять запросы в нашу СУБД:
Для того, чтобы непосредственно отправить любой SQL-запрос в нашу СУБД мы можем использовать метод execute() из объекта курсора:
Также рекомендуется обновлять БД после записей в неё:
По завершении работы закрываем соединение и курсор:
На этом «формальности» заканчиваются, в следующих уроках уже коснёмся темы непосредственно самого SQL (structured query language).
#Обучение #SQLite
Формальности это лишь потому, что в обычном SQL подобных действий не требуется.
Для начала импортируем встроенную библиотеку Python для взаимодействия с СУБД SQLite:
import sqlite3
Затем нам нужно указать, с каким файлом мы работаем (файл с нашей базой данных):
import sqlite3
conn = sqlite3.connect("database.db")
Если файла не существует, он будет создан. Расширение файлов - ".db".
Затем создадим специальный объект курсора, который впоследствии нам поможет отправлять запросы в нашу СУБД:
import sqlite3
conn = sqlite3.connect("database.db")
cur = conn.cursor()
Для того, чтобы непосредственно отправить любой SQL-запрос в нашу СУБД мы можем использовать метод execute() из объекта курсора:
import sqlite3
conn = sqlite3.connect("database.db")
cur = conn.cursor()
cur.execute("SQL-запрос в СУБД")
Также рекомендуется обновлять БД после записей в неё:
import sqlite3
conn = sqlite3.connect("database.db")
cur = conn.cursor()
cur.execute("SQL-запрос в СУБД")
conn.commit()
По завершении работы закрываем соединение и курсор:
import sqlite3
conn = sqlite3.connect("database.db")
cur = conn.cursor()
cur.execute("SQL-запрос в СУБД")
conn.commit()
cur.close()
conn.close()
На этом «формальности» заканчиваются, в следующих уроках уже коснёмся темы непосредственно самого SQL (structured query language).
#Обучение #SQLite
👍5
😌 Отойдём от Python: Реляционные БД
Реляционная модель базы данных - это наиболее популярный и широко используемый тип баз данных, который был разработан в 1970-х годах Эдгаром Коддом из университета Калифорнии. Основное отличие реляционной модели от других типов баз данных заключается в том, что она использует таблицы для хранения и управления данными.
В реляционной модели данные представляют собой отношения между записями (строками) в таблице и полями (столбцами), которые описывают эти отношения. Каждая таблица имеет уникальное имя, а каждое поле имеет уникальное имя и тип данных.
1. Основные понятия реляционной модели базы данных:
• Таблица - это набор записей, хранящихся в виде строк.
• Поле (столбец) - это отдельный компонент таблицы, содержит конкретную информацию о каждой записи.
• Стояние (ячейка) - это индивидуальное значение поля для конкретной записи.
• Отношение (ассоциация) - это связь между таблицами, которая устанавливается с помощью ключа.
2. Ключевые понятия реляционной модели:
• Ключ (primary key) - уникальный идентификатор для каждой записи в таблице, который отличает её от других записей.
• Внешний ключ (foreign key) - ссылка на конкретную таблицу, которая связывает две таблицы.
• Конкатенация (join) - операция, которая объединяет несколько таблиц по общему полю.
3. Реляционные базы данных также используют понятия:
• VIEW (представление) - виртуальная таблица, которая генерирует результат из запросов к основным таблицам.
• INDEX (индекс) - структура данных, которая ускоряет доступ к определенным полевым значениям.
На этом заканчивается теория реляционных баз данных (SQLite относится к ним). Далее только Structured Query Language.
#Обучение #SQLite
Реляционная модель базы данных - это наиболее популярный и широко используемый тип баз данных, который был разработан в 1970-х годах Эдгаром Коддом из университета Калифорнии. Основное отличие реляционной модели от других типов баз данных заключается в том, что она использует таблицы для хранения и управления данными.
В реляционной модели данные представляют собой отношения между записями (строками) в таблице и полями (столбцами), которые описывают эти отношения. Каждая таблица имеет уникальное имя, а каждое поле имеет уникальное имя и тип данных.
1. Основные понятия реляционной модели базы данных:
• Таблица - это набор записей, хранящихся в виде строк.
• Поле (столбец) - это отдельный компонент таблицы, содержит конкретную информацию о каждой записи.
• Стояние (ячейка) - это индивидуальное значение поля для конкретной записи.
• Отношение (ассоциация) - это связь между таблицами, которая устанавливается с помощью ключа.
2. Ключевые понятия реляционной модели:
• Ключ (primary key) - уникальный идентификатор для каждой записи в таблице, который отличает её от других записей.
• Внешний ключ (foreign key) - ссылка на конкретную таблицу, которая связывает две таблицы.
• Конкатенация (join) - операция, которая объединяет несколько таблиц по общему полю.
3. Реляционные базы данных также используют понятия:
• VIEW (представление) - виртуальная таблица, которая генерирует результат из запросов к основным таблицам.
• INDEX (индекс) - структура данных, которая ускоряет доступ к определенным полевым значениям.
На этом заканчивается теория реляционных баз данных (SQLite относится к ним). Далее только Structured Query Language.
#Обучение #SQLite
Какие Python-библиотеки вы используете для динамического формирования HTML-страниц? (Пригодится для дальнейшего контента)
Anonymous Poll
24%
Jinja2
29%
Django Template Language
0%
Mako
0%
Chameleon
0%
Genshi
0%
Brigitte
59%
Не приходилось этим пользоваться
3%
Свой вариант (комментарии)
🤔3
Интересно ли вам начать изучать Машинное Обучение? (Курс в рамках канала)
Anonymous Poll
68%
Да
32%
Нет
📂 SQL: Создание таблиц
Советуем перечитать этот пост, если не помните систему реляционных БД.
Все данные в реляционных базах данных хранятся в виде таблиц. В одной БД нет ограничений на кол-во таблиц (в SQLite).
Давайте научимся составлять SQL-запросы, которые позволят нам создавать таблицы:
1. Т.к. мы хотим создать таблицу, давайте так и напишем:
2. Далее мы должны указать имя таблицы и в скобках множество её столбцов:
Мы создали таблицу с названием ChannelParticipant и двумя столбцами: participant_id и time_joining.
3. Сейчас наш запрос не совсем корректный, т.к. у столбов мы не указали тип данных, который они могут содержать. Давайте исправим это:
• INTEGER - тип данных для хранения целых чисел
• DATETIME - тип данных для хранения даты и времени
Теперь всё будет работать корректно.
Также обращаем внимание, что для SQL регистр не важен (за исключением названий баз данных, таблиц и столбцов в них). Но принято ключевые слова SQL писать в верхнем регистре.
Также не забывайте, что всё происходит в рамках Python. Саму базу данных мы научились создавать здесь.
#Обучение #SQLite
Советуем перечитать этот пост, если не помните систему реляционных БД.
Все данные в реляционных базах данных хранятся в виде таблиц. В одной БД нет ограничений на кол-во таблиц (в SQLite).
Давайте научимся составлять SQL-запросы, которые позволят нам создавать таблицы:
1. Т.к. мы хотим создать таблицу, давайте так и напишем:
CREATE TABLE
2. Далее мы должны указать имя таблицы и в скобках множество её столбцов:
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
🔥4
Что такое Непрерывная интеграция (Continuous Integration, CI)?
Непрерывная интеграция – это процесс разработки программного обеспечения, при котором разработчики часто объединяют свои изменения в общий репозиторий, автоматически собирают и тестируют код после каждого коммита. Это позволяет быстро обнаруживать и исправлять ошибки, а также поддерживать высокий уровень качества кода.
Основные принципы непрерывной интеграции включают:
1. Частые коммиты: разработчики должны регулярно коммитить свой код в общий репозиторий. Это помогает избежать накопления большого количества изменений, которые могут привести к конфликтам при слиянии.
2. Автоматическое сборка и тестирование: после каждого коммита система CI должна автоматически собирать и тестировать код. Это позволяет быстро выявить ошибки и предотвратить их распространение на другие части системы.
3. Обнаружение ошибок: система CI должна предоставлять информацию о том, какие тесты прошли успешно, а какие нет. Это помогает разработчикам быстро определить причину проблемы и исправить её.
4. Регулярный выпуск: система CI должна позволять выпускать новые версии продукта на регулярной основе. Это помогает быстрее реагировать на изменения требований условного заказчика и улучшать качество продукта.
5. Командная работа: непрерывная интеграция требует от команды разработчиков работать вместе, чтобы достичь общей цели. Каждый член команды должен понимать свою роль (капибара или супергерой) и ответственность в процессе разработки.
6. Использование инструментов: для реализации непрерывной интеграции используются различные инструменты, такие как Jenkins, TeamCity, Travis CI и др. Они помогают автоматизировать процесс сборки и тестирования, а также предоставляют удобный интерфейс для управления процессом.
Непрерывная интеграция является важным элементом гибкой методологии разработки ПО, такой как Scrum или Kanban. Она помогает ускорить процесс разработки, улучшить качество кода и повысить эффективность работы команды.
💬 Также можете написать в комментариях, разбор каких терминов (связанных с Python) вы хотите услышать, что так и будет.
#ЧтоТакое | #непрерывная_интеграция #ci
@X_Python
Непрерывная интеграция – это процесс разработки программного обеспечения, при котором разработчики часто объединяют свои изменения в общий репозиторий, автоматически собирают и тестируют код после каждого коммита. Это позволяет быстро обнаруживать и исправлять ошибки, а также поддерживать высокий уровень качества кода.
Основные принципы непрерывной интеграции включают:
1. Частые коммиты: разработчики должны регулярно коммитить свой код в общий репозиторий. Это помогает избежать накопления большого количества изменений, которые могут привести к конфликтам при слиянии.
2. Автоматическое сборка и тестирование: после каждого коммита система CI должна автоматически собирать и тестировать код. Это позволяет быстро выявить ошибки и предотвратить их распространение на другие части системы.
3. Обнаружение ошибок: система CI должна предоставлять информацию о том, какие тесты прошли успешно, а какие нет. Это помогает разработчикам быстро определить причину проблемы и исправить её.
4. Регулярный выпуск: система CI должна позволять выпускать новые версии продукта на регулярной основе. Это помогает быстрее реагировать на изменения требований условного заказчика и улучшать качество продукта.
5. Командная работа: непрерывная интеграция требует от команды разработчиков работать вместе, чтобы достичь общей цели. Каждый член команды должен понимать свою роль (
6. Использование инструментов: для реализации непрерывной интеграции используются различные инструменты, такие как Jenkins, TeamCity, Travis CI и др. Они помогают автоматизировать процесс сборки и тестирования, а также предоставляют удобный интерфейс для управления процессом.
Непрерывная интеграция является важным элементом гибкой методологии разработки ПО, такой как Scrum или Kanban. Она помогает ускорить процесс разработки, улучшить качество кода и повысить эффективность работы команды.
💬 Также можете написать в комментариях, разбор каких терминов (связанных с Python) вы хотите услышать, что так и будет.
#ЧтоТакое | #непрерывная_интеграция #ci
@X_Python
🔥4
Что такое Генераторы в Python?
Генераторы в Python — специальные функции, которые позволяют эффективно обрабатывать последовательности данных. Они похожи на обычные функции, но имеют некоторые особенности.
Одна из главных особенностей генераторов заключается в том, что они могут быть использованы для создания итераторов. Итератор — это объект, который позволяет перебирать элементы последовательности без необходимости хранить все элементы в памяти одновременно. Это особенно полезно при работе с большими объемами данных.
Вот пример синтаксиса генератора в Python:
В этом примере generator_function является генератором, который создает последовательность чисел, удваивая каждое число от 0 до 9. Каждый раз, когда вызывается функция next() или используется в цикле for, генератор возвращает следующее значение в последовательности.
Когда мы вызываем generator_function(), мы получаем генераторный объект, который может быть использован для получения значений. В данном случае, мы используем цикл for для перебора всех значений, возвращаемых генератором.
Важно отметить, что генераторы в Python являются ленивыми, то есть они не вычисляют значения заранее, а создают их по мере необходимости. Это делает их очень эффективными для работы с большими объемами данных или для ситуаций, где данные не могут быть полностью загружены в память.
#ЧтоТакое | #генераторы #итераторы
@X_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
👍3 1
Что такое Итераторы в Python?
Итераторы в Python — это объекты, которые позволяют последовательно перебирать элементы коллекции, такие как список, множество или словарь. Они предоставляют интерфейс для итерирования, который состоит из метода
Пример использования итератора для списка:
Этот код выведет числа от 1 до 5. Важно отметить, что после того, как все элементы будут перебраны, следующиnext
Пример использования итератора для словаря:
Этот код выведет имена людей из словаря. Обратите внимание, что итератор для словаря перебирает только ключи, а не пары ключ-значение.
#ЧтоТакое | #итераторы
@X_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
👍6 1 1
📗 Logging в Python - это механизм, который позволяет записывать информацию о работе программы во время её выполнения. Для использования logging в Python необходимо импортировать встроенный модуль logging.
Прежде всего, нужно настроить логгер с помощью команды logging.basicConfig(), где можно указать уровень логирования, формат сообщений и другие параметры.
Далее, для записи логов в различные уровни (например, отладочные сообщения или ошибки), используются соответствующие методы debug(), info(), warning(), error() и critical() объекта логгера.
Пример использования:
После выполнения кода, вы сможете увидеть логи в консоли или сохранить их в файл для последующего анализа.
Это был самый базовый разбор модуля. Ставьте реакцию, если хотите более глубокое изучение.
P.S. Из «боевых» версий кода обязательно убирайте лигирование, оно применяется только при разработке/тестировании.
#Обучение #Библиотека | #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
⌛ Модуль time в Python: Полезные функции для работы со временем
Модуль
Основные функции
1. time()
Функция
Пример использования:
2. sleep()
Функция
Пример:
3. ctime()
Функция
Пример:
4. gmtime() и localtime()
Эти функции преобразуют время в формате секунд с начала эпохи в структурированное время (
Пример:
5. strftime()
Эта функция форматирует объекты времени в строку по заданному шаблону.
Пример:
Здесь %Y
7. time.perf_counter() и time.process_time()
Эти функции используются для измерения времени выполнения кода.
Пример использования:
#Обучение #Библиотека | #time
Модуль
time
в Python
предоставляет функциональные возможности для работы с системным временем. В отличие от модуля datetime
, который больше ориентирован на работу с датами и временем в высокоуровневом контексте, time
предлагает более низкоуровневые операции, часто взаимодействующие напрямую с системными функциями.Основные функции
1. time()
Функция
time()
возвращает текущее время в секундах с начала эпохи (обычно это 1 января 1970 года). Результат — это число с плавающей точкой.Пример использования:
import time
current_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() и time.process_time()
Эти функции используются для измерения времени выполнения кода.
perf_counter()
возвращает время с начала запуска программы, а process_time()
— процессорное время.Пример использования:
start = time.perf_counter()
# Симуляция работы программы
time.sleep(2)
end = time.perf_counter()
print(f"Время выполнения: {end - start} секунд")
Особенности и ограничения
•
Работа с часовыми поясами ограничена. Для более сложных операций лучше использовать модуль datetime
или сторонние библиотеки, такие как pytz
.
•
Некоторые функции зависят от операционной системы. Например, разрешение времени, которое может поддерживать sleep()
, может варьироваться в зависимости от платформы.#Обучение #Библиотека | #time
🔗 Основы дескрипторов в Python — Часть 1
▎Введение
Дескрипторы (descriptors) в Python — это механизм управления доступом к атрибутам объекта. Дескрипторы позволяют контролировать, что происходит при чтении, записи и удалении атрибутов класса. Если объект класса содержит один или несколько специальных методов:
Дескрипторы часто применяются в ORM, управлении доступом к свойствам и оптимизации работы с памятью.
▎Механизм работы дескрипторов
В Python существуют два типа дескрипторов:
1. Дескрипторы данных (data descriptors) — реализуют методы
2. Недельные дескрипторы (non-data descriptors) — реализуют только метод
Дескрипторы управляют доступом к атрибутам, и их методы вызываются автоматически при попытке чтения, изменения или удаления атрибута.
▎Методы дескрипторов
1.
2.
3.
▎Как подставляются аргументы в методы дескриптора
Когда вы обращаетесь к атрибуту объекта, который является дескриптором, Python автоматически подставляет необходимые аргументы:
1.
2.
3.
▎Пример дескриптора данных
В этом примере класс
▎Заключение
Дескрипторы — это (ещё раз) инструмент для управления атрибутами классов. Понимание их принципов позволяет глубже контролировать поведение объектов в Python.
#Обучение #ООП | #дескрипторы
@X_Python
▎Введение
Дескрипторы (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 = value
class Temperature:
celsius = Celsius()
def __init__(self, celsius):
self.celsius = celsius
# Пример использования
t = Temperature(25)
print(t.celsius) # 25
t.celsius = -300 # Ошибка: Температура ниже абсолютного нуля невозможна!
В этом примере класс
Celsius
является дескриптором данных, который управляет доступом к атрибуту celsius
в классе Temperature
.▎Заключение
Дескрипторы — это (ещё раз) инструмент для управления атрибутами классов. Понимание их принципов позволяет глубже контролировать поведение объектов в Python.
#Обучение #ООП | #дескрипторы
@X_Python
❤3
🔗 Продвинутые возможности дескрипторов в Python — Часть 2
▎Пример недельного дескриптора
Недельные дескрипторы, в отличие от дескрипторов данных, реализуют только метод
В этом примере класс
▎Порядок разрешения атрибутов
При доступе к атрибуту Python определяет порядок разрешения следующим образом:
1. Если атрибут является дескриптором данных, он имеет приоритет над атрибутом экземпляра класса.
2. Если атрибут является недельным дескриптором, то приоритет отдается атрибуту экземпляра, и если он не найден, то вызывается дескриптор.
▎Применение дескрипторов
1. Свойства: Механизм дескрипторов лежит в основе встроенного механизма свойств через декоратор
2. ORM: В ORM дескрипторы могут использоваться для управления полями базы данных. Например, доступ к данным может быть реализован через дескриптор, который автоматически выполняет SQL-запросы для получения или обновления данных.
3. Кеширование: Дескрипторы полезны для реализации ленивых вычислений и кеширования результатов. Можно использовать дескриптор для вычисления значения только при первом доступе и сохранения результата для последующих обращений.
▎Заключение
Продвинутые возможности дескрипторов позволяют управлять доступом к атрибутам более гибко и эффективно. Их использование может значительно упростить работу с кодом, особенно в сложных проектах, таких как ORM или кеширование данных. Это «вывод» из поста.
#Обучение #ООП | #дескрипторы
@X_Python
▎Пример недельного дескриптора
Недельные дескрипторы, в отличие от дескрипторов данных, реализуют только метод
__get__
. Они используются, когда нужно только контролировать доступ на чтение атрибута.class Square:
def __get__(self, instance, owner):
return instance._side ** 2
class Rectangle:
side = Square()
def __init__(self, side):
self._side = side
# Пример использования
r = Rectangle(4)
print(r.side) # 16
В этом примере класс
Square
— недельный дескриптор, который вычисляет площадь квадрата. Аргументы instance
и owner
автоматически подставляются при вызове метода дескриптора: instance
— это объект r
, а owner
— класс Rectangle
.▎Порядок разрешения атрибутов
При доступе к атрибуту Python определяет порядок разрешения следующим образом:
1. Если атрибут является дескриптором данных, он имеет приоритет над атрибутом экземпляра класса.
2. Если атрибут является недельным дескриптором, то приоритет отдается атрибуту экземпляра, и если он не найден, то вызывается дескриптор.
▎Применение дескрипторов
1. Свойства: Механизм дескрипторов лежит в основе встроенного механизма свойств через декоратор
@property
. Вот пример:class MyClass:
@property
def value(self):
return self._value
@property
использует дескрипторы для управления доступом к атрибутам объекта.2. ORM: В ORM дескрипторы могут использоваться для управления полями базы данных. Например, доступ к данным может быть реализован через дескриптор, который автоматически выполняет SQL-запросы для получения или обновления данных.
3. Кеширование: Дескрипторы полезны для реализации ленивых вычислений и кеширования результатов. Можно использовать дескриптор для вычисления значения только при первом доступе и сохранения результата для последующих обращений.
▎Заключение
Продвинутые возможности дескрипторов позволяют управлять доступом к атрибутам более гибко и эффективно. Их использование может значительно упростить работу с кодом, особенно в сложных проектах, таких как ORM или кеширование данных. Это «вывод» из поста.
#Обучение #ООП | #дескрипторы
@X_Python
👍4
Приглашаем beta-тестировщиков AI-платформы для изучения английского 🔥
Привет, сообщество! 👋
Мы возвращаемся с новым проектом — инновационным сервисом для изучения английского. И нам нужна ваша помощь!
Что предлагаем:
🔴 Бесплатный доступ навсегда (обычная цена — 500₽/мес) за фидбек и идеи (как от beta-тестировщика).
🔴 Уникальный метод обучения с AI.
🔴 Шанс повлиять на стартап — ваше мнение определит развитие проекта!
Для кого это актуально?
✔️ Хотите подтянуть английский для работы в IT или переговоров с заказчиками.
✔️ Мечтаете читать документацию и статьи в оригинале.
Как присоединиться?
Напишите мне (@VokabooCEO) в личные сообщения 🖐
Привет, сообщество! 👋
Мы возвращаемся с новым проектом — инновационным сервисом для изучения английского. И нам нужна ваша помощь!
Что предлагаем:
🔴 Бесплатный доступ навсегда (обычная цена — 500₽/мес) за фидбек и идеи (как от beta-тестировщика).
🔴 Уникальный метод обучения с AI.
🔴 Шанс повлиять на стартап — ваше мнение определит развитие проекта!
Для кого это актуально?
✔️ Хотите подтянуть английский для работы в IT или переговоров с заказчиками.
✔️ Мечтаете читать документацию и статьи в оригинале.
Как присоединиться?
Напишите мне (@VokabooCEO) в личные сообщения 🖐
❤4🔥2👍1