Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
develop:pyton:date [2022/02/19 11:19] admin создано |
develop:pyton:date [2022/02/20 10:32] (текущий) admin |
||
---|---|---|---|
Строка 2: | Строка 2: | ||
+ | ===== Работа с датой и временем ===== | ||
+ | Модули: | ||
+ | * **time** - текущие дата/ | ||
+ | * **datetime** - манипуляции, | ||
+ | * **calendar** - календарь | ||
+ | * **timeit** - позволяет измерить время выполнения фрагментов кода | ||
+ | ==== Текущие дата/ | ||
+ | Модуль **time** | ||
+ | * **time()**- вещественное число, кол-во секунд с начала эпохи (01.01.1970) | ||
+ | * **gmtime(< | ||
+ | * **localtime(< | ||
+ | * **mktime(< | ||
+ | |||
+ | Объект **struct_time** содержит: | ||
+ | * **tm_year (0)**- год | ||
+ | * **tm_mon (1)**- месяц | ||
+ | * **tm_mday (2)**- день | ||
+ | * **tm_hour (3)**- час | ||
+ | * **tm_min (4)**- мин | ||
+ | * **tm_sec (5)**- сек | ||
+ | * **tm_wday (6)**- день недели | ||
+ | * **tm_yday (7)**- кол-во дней с начала года | ||
+ | * **tm_isdst (8)**- флаг летнего времени | ||
+ | |||
+ | <code python> | ||
+ | d= time.gmtime() | ||
+ | d.tm_year, d[0] | ||
+ | |||
+ | # Все содержимое | ||
+ | tuple(d) | ||
+ | >> (2017, 11, 21, 14, 19, 34, 1, 325, 0) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Форматирование даты/ | ||
+ | * **strftime(< | ||
+ | * **strptime(< | ||
+ | * **asctime(< | ||
+ | * **ctime(< | ||
+ | |||
+ | < | ||
+ | < | ||
+ | * %a Сокращенное название дня недели Вс, Пн | ||
+ | * %A Полное название дня недели воскресенье, | ||
+ | * %w День недели в виде десятичного числа 0…6 | ||
+ | * %d День месяца в виде десятичной дроби с нулями 01, 02 | ||
+ | * %-d день месяца в виде десятичного числа 1, 2.. | ||
+ | * %b Сокращенное название месяца Jan, Feb | ||
+ | * %m месяц как десятичное число, дополненное нулями 01, 02 | ||
+ | * %-м месяц в виде десятичного числа 1, 2 | ||
+ | * %B Полное название месяца Январь, | ||
+ | * %y год без века в виде десятичного числа, дополненного нулями 99, 00 | ||
+ | * %-й год без века в виде десятичного числа 0, 99 | ||
+ | * %Y год с веком в виде десятичного числа 2000, 1999 | ||
+ | * %H час (24-часовой формат) как десятичное число с нулями 01, 23 | ||
+ | * %-H час (24-часовой формат) в виде десятичного числа 1, 23 | ||
+ | * %I час (12-часовой формат) в виде десятичного числа с нулевым заполнением 01, 12 | ||
+ | * %-I час(12 часов) как десятичное число 1, 12 | ||
+ | * %p языковой стандарт AM или PM AM, PM | ||
+ | * %M Минуты в виде десятичного числа, дополненного нулями 01, 59 | ||
+ | * %-M Минуты в виде десятичного числа 1, 59 | ||
+ | * %S Second как десятичное число, дополненное нулями 01, 59 | ||
+ | * %-S Секунда как десятичное число 1, 59 | ||
+ | * %f микросекунды в виде десятичного числа, дополненного нулями слева 000000, 999999 | ||
+ | * %z смещение UTC в формате +ЧЧММ или -ЧЧММ | ||
+ | * %Z Название часового пояса | ||
+ | * %j день года в виде десятичного числа, дополненного нулями 001, 365 | ||
+ | * %-j день года в виде десятичного числа 1 365 | ||
+ | * %U Номер недели в году (первым считается воскресенье) 0, 6 | ||
+ | * %W Номер недели года 00, 53 | ||
+ | * Соответствующее представление даты и времени локали %c Пн, 30 сентября, | ||
+ | * %x языковое стандартное представление даты 30.11.98 | ||
+ | * Соответствующее представление времени локали %X 10:03:43 | ||
+ | * %% Буквенный символ «%» % | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== " | ||
+ | time.sleep(sec) | ||
+ | |||
+ | |||
+ | ==== Модуль " | ||
+ | Модуль содержит классы: | ||
+ | * **timedelta** - дата в виде кол-ва дней, сек, микросек. Экземпляр можно складывать с **date**/ | ||
+ | * **date, time, datetime** - дата, время, комбинация даты/ | ||
+ | * **tzinfo** - time zone | ||
+ | |||
+ | |||
+ | === timedelta === | ||
+ | Конструктор- timedelta(< | ||
+ | Можно присваивать в порядке следования, | ||
+ | Поддерживаются арифметические операции, | ||
+ | |||
+ | <code python> | ||
+ | d1= datetime.timedelta(days= 2) | ||
+ | d2= datetime.timedelta(days= 7) | ||
+ | d1 + d2, d1 / d2 ... | ||
+ | </ | ||
+ | |||
+ | |||
+ | === date === | ||
+ | Операции над датами. date(< | ||
+ | |||
+ | Для получения есть методы: | ||
+ | * **today()** - текущая дата | ||
+ | * **fromtimestamp(< | ||
+ | * **fromordinal()** - | ||
+ | |||
+ | <code python> | ||
+ | d= datetime.date.today() | ||
+ | d.day, d.month, d.year | ||
+ | </ | ||
+ | |||
+ | Есть методы: | ||
+ | |||
+ | |||
+ | === time === | ||
+ | Операции над временем. time(< | ||
+ | **Арифметические действия не поддерживаются**, | ||
+ | |||
+ | |||
+ | === datetime === | ||
+ | В целом аналогично предыдущим, | ||
+ | * **today()**, | ||
+ | * **utcnow()** - текущее время UTC | ||
+ | * **[utc]fromtimestamp(< | ||
+ | * **combine(< | ||
+ | * **strptime(< | ||
+ | |||
+ | |||
+ | ==== Модуль calendar ==== | ||
+ | Содержит классы для вывода календаря в простом, | ||
+ | Базовый класс **Calendar**, | ||
+ | **TextCalendar (LocateCalendar )** в виде форматированного текста (локализованные названия)\\ | ||
+ | **HTMLCalendar, | ||
+ | |||
+ | <code python> | ||
+ | import calendar | ||
+ | |||
+ | c= calendar.Calendar(0) | ||
+ | print(c.monthdayscalendar(2017, | ||
+ | |||
+ | c= calendar.TextCalendar(0) | ||
+ | print(c.formatyear(2017)) | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Другие функции === | ||
+ | * **weekheader()** - строка- аббревиатур дней недели | ||
+ | * **isleap()** - проверка года високосный | ||
+ | * **weekday()** - номер дня недели указанной даты | ||
+ | |||
+ | Атрибуты: | ||
+ | * **day_[name, | ||
+ | * **month_[name, | ||
+ | |||
+ | |||
+ | ==== Время выполнения фрагментов кода ==== | ||
+ | Замер не конкретного куска кода а **лишь образца** кода, который передается строкой..\\ | ||
+ | from timeit import Timer\\ | ||
+ | Timer(< | ||
+ | |||
+ | <code python> | ||
+ | code1= """ | ||
+ | t1= Timer(stmt= code1) | ||
+ | >> t1.timeit() | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Пользовательские функции ===== | ||
+ | Оператор **pass** можно использовать как загрузку для пустой функции\\ | ||
+ | |||
+ | ==== Определение и вызов ==== | ||
+ | Функция сама является объектом, | ||
+ | Поддерживает стандартные атрибуты, | ||
+ | |||
+ | |||
+ | ==== Расположение определения ==== | ||
+ | Определение должно быть перед вызовом, | ||
+ | |||
+ | |||
+ | ==== Необязательные параметры ==== | ||
+ | Необязательность имеется ввиду значение по умолчанию, | ||
+ | Все **аргументы передаются по ссылке** поэтому изменяемые типы данных **могут изменить исходную переменную**, | ||
+ | |||
+ | :!: Что касается предопределенных переменных - они **похоже статические** и **могут накапливать значение** при повторных вызовах, | ||
+ | |||
+ | |||
+ | ==== Переменное число параметров ==== | ||
+ | Если перед переменной указать звездочку, | ||
+ | Если две звездочки, | ||
+ | Если указать первое затем второе, | ||
+ | |||
+ | Если функция не должна принимать переменного кол-ва параметров, | ||
+ | |||
+ | <code python> | ||
+ | # Произвольное кол-во параметров | ||
+ | def func(*t): | ||
+ | for i in t: | ||
+ | ... | ||
+ | |||
+ | # Ф-я примет любые параметры | ||
+ | def func(*x, **y): | ||
+ | ... | ||
+ | |||
+ | # Аргументы только по именам | ||
+ | def func(x=1, y=2, *, a): | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Анонимные функции ==== | ||
+ | т.н. **лямбда функция**, | ||
+ | <code python> | ||
+ | f1= lambda: 10 + 20 | ||
+ | f2= lambda x, y: x + y # аргументы | ||
+ | |||
+ | print(f1()) | ||
+ | print(f2(10, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Функции-генераторы ==== | ||
+ | При последовательных вызовах, | ||
+ | Использование этого оператора собсна и делает обычную функцию функцией-генератором\\ | ||
+ | Удобно при обработке действительно большой последовательности, | ||
+ | Эти функции поддерживают метод **__next()__**, | ||
+ | Можно вкладывать генераторы\\ | ||
+ | |||
+ | <code python> | ||
+ | def func(x, y): | ||
+ | for i in range(1, x+ 1): | ||
+ | yield i ** y | ||
+ | |||
+ | i= func(3, 3) | ||
+ | print(i.__next__()) # Выведет: | ||
+ | print(i.__next__()) # Выведет: | ||
+ | print(i.__next__()) # Выведет: | ||
+ | print(i.__next__()) # Исключение StopIteration | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Декораторы функции ==== | ||
+ | Обычные функции, | ||
+ | В аргументе декора передается ссылка на целевую функцию, | ||
+ | |||
+ | <code python> | ||
+ | def deco(f): | ||
+ | ... | ||
+ | return f # ссылка на целевую ф-ю | ||
+ | |||
+ | @deco | ||
+ | def func(x): | ||
+ | ... | ||
+ | | ||
+ | print (func(10)) | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Рекурсия ==== | ||
+ | Все как обычно, | ||
+ | |||
+ | |||
+ | ==== Глобальные и локальные переменные ==== | ||
+ | Глобальные переменные те что определены за пределами любой функции, | ||
+ | Для обращение к ней из функции, | ||
+ | |||
+ | |||
+ | ==== Вложенные функции ==== | ||
+ | Внутри вложенной функции **доступна область видимости** родительской функции\\ | ||
+ | Доступны но изменить во вложенной так просто нельзя видимо, | ||
+ | Не забываем что переменные передаются ссылками\\ | ||
+ | |||
+ | |||
+ | ==== Аннотации функций ==== | ||
+ | Документирование аргументов функций\\ | ||
+ | <code python> | ||
+ | # Описание после двоеточия, | ||
+ | def func(a: " | ||
+ | </ | ||