Студия Питониста | Python
151 subscribers
40 photos
10 files
23 links
В канале вы найдёте множество полезных материалов про Python: практичные статьи, увлекательные обучалки и ещё много чего.

По вопросам и предложениям - @NeuroBot_ad.
Download Telegram
Модуль time в Python: Полезные функции для работы со временем

Модуль 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
3👍22
🔗 Основы дескрипторов в 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 = 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

▎Пример недельного дескриптора

Недельные дескрипторы, в отличие от дескрипторов данных, реализуют только метод __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) в личные сообщения 🖐
4🔥2👍1