Инструменты пользователя

Инструменты сайта


develop:pyton:date

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:pyton:date [2022/02/19 14:53]
admin
develop:pyton:date [2022/02/20 10:32] (текущий)
admin
Строка 39: Строка 39:
  
 ==== Форматирование даты/время ==== ==== Форматирование даты/время ====
-  * **strftime(<строка формата>, <struct_time>=)** -  +  * **strftime(<строка формата>, <struct_time>= )** - ДТ строкой, в указанном формате 
-  * **strptime(<строка с датой>, <строка формата>=)** -  +  * **strptime(<строка с датой>, <строка формата>= )** - разбирает строку в **struct_time** 
-  * **asctime(<struct_time>=)** -  +  * **asctime(<struct_time>= )** - строка в формате "%a %b %d %H:%M:%S" 
-  * **ctime(<sec>=)** -  +  * **ctime(<sec>= )** - аналогично предыдущему, но принимает кол-во секунд
-  * **** -  +
-  * **** -  +
-  * **** +
  
- +<details
-<code python+<summary>:!: Аргументы форматирования: </summary
-</code+  * %a Сокращенное название дня недели Вс, Пн 
- +  * %A Полное название дня недели воскресенье, понедельник 
-<code python> +  * %w День недели в виде десятичного числа 0…6 
-</code>+  * %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 сентября, 07:06:05 2013 г. 
 +  * %x языковое стандартное представление даты 30.11.98 
 +  * Соответствующее представление времени локали %X 10:03:43 
 +  * %% Буквенный символ «%» % 
 +</details>
  
  
 ==== "Засыпание" скрипта ==== ==== "Засыпание" скрипта ====
- +time.sleep(sec)
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Модуль "datetime" манипуляции с ДТ ==== ==== Модуль "datetime" манипуляции с ДТ ====
- +Модуль содержит классы: 
- +  * **timedelta** - дата в виде кол-ва дней, сек, микросек. Экземпляр можно складывать с **date**/**datetime**. Результат будет в этом формате 
-<code python> +  * **date, time, datetime** - дата, время, комбинация даты/время в виде объекта 
-</code> +  * **tzinfo** - time zone
- +
-<code python> +
-</code>+
  
  
 === timedelta === === timedelta ===
- +Конструктор- timedelta(<days>=, <seconds>=, <microsec>=, <milisec>=, <minutes>=, <hours>=, <weeks>= )\\ 
- +Можно присваивать в порядке следования, либо **именованными аргументами** (timedelta(hours= 1))\\ 
-<code python> +Поддерживаются арифметические операции, сравнение и т.д.\\
-</code>+
  
 <code python> <code python>
 +d1= datetime.timedelta(days= 2)
 +d2= datetime.timedelta(days= 7)
 +d1 + d2, d1 / d2 ...
 </code> </code>
  
  
 === date === === date ===
 +Операции над датами. date(<год>, <месяц>, <день>).\\
  
 +Для получения есть методы:\\
 +  * **today()** - текущая дата
 +  * **fromtimestamp(<sec>)** - дата, в соответствии кол-ва секунд с начала эпохи
 +  * **fromordinal()** - 
  
 <code python> <code python>
 +d= datetime.date.today()
 +d.day, d.month, d.year
 </code> </code>
  
-<code python> +Есть методы: replace(), strftime(), isoformat(), ctime(), timetuple(), toordinal(), weekday(), isoweekday(), isocalendar().\\
-</code>+
  
  
 === time === === time ===
- +Операции над временем. time(<hour>=, <minute>=, <second>=, <microsec>=, <tzinfo>=, <fold>= )\\ 
- +**Арифметические действия не поддерживаются**, только сравнение.\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 === datetime === === datetime ===
- +В целом аналогично предыдущим, включает многое из них, в конструкторе обязательно дата, время не обязательно\\ 
- +  * **today()**, **now(<Timezone>= )**- если зона не указана, то аналогичен первому методу.\\ 
-<code python+  * **utcnow()** - текущее время UTC 
-</code+  * **[utc]fromtimestamp(<sec>)** 
- +  * **combine(<date>, <time>)** - на основе двух экземпляров 
-<code python+  * **strptime(<строка даты>, <формат>)** - строка в дату
-</code>+
  
  
 ==== Модуль calendar ==== ==== Модуль calendar ====
 +Содержит классы для вывода календаря в простом, текстовом виде\\ 
 +Базовый класс **Calendar**, возвратит перечень всех чисел указанного месяца, сгруппированных по дням недели\\ 
 +**TextCalendar (LocateCalendar )** в виде форматированного текста (локализованные названия)\\ 
 +**HTMLCalendar, LocateHTMLCalendar** в html формате\\
  
 <code python> <code python>
-</code>+import calendar
  
-<code python> +c= calendar.Calendar(0) 
-</code>+print(c.monthdayscalendar(2017, 11))
  
- +ccalendar.TextCalendar(0) 
-=== TextCalendar, LocateCalendar === +print(c.formatyear(2017))
- +
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code> +
- +
- +
-=== HTMLCalendar, LocateHTMLCalendar === +
- +
- +
-<code python> +
-</code> +
- +
-<code python>+
 </code> </code>
  
  
 === Другие функции === === Другие функции ===
 +  * **weekheader()** - строка- аббревиатур дней недели
 +  * **isleap()** - проверка года високосный
 +  * **weekday()** - номер дня недели указанной даты
  
- +Атрибуты: 
-<code python> +  * **day_[name,abbr]** - список, содержащий перечень локализованных названий дней недели 
-</code> +  * **month_[name,abbr]** - список, содержащий перечень локализованных названий месяцев
- +
-<code python> +
-</code>+
  
  
 ==== Время выполнения фрагментов кода ==== ==== Время выполнения фрагментов кода ====
 +Замер не конкретного куска кода а **лишь образца** кода, который передается строкой..\\ 
 +from timeit import Timer\\ 
 +Timer(<stmt>=, <setup>=, <timer>= ) - в первом указывается код, который нужно замерить, второй- код который нужно выполнить перед измерением\\
  
 <code python> <code python>
 +code1= """ for line in arr: ... """
 +t1= Timer(stmt= code1)
 +>> t1.timeit()
 </code> </code>
- 
-<code python> 
-</code> 
- 
- 
  
  
  
 ===== Пользовательские функции ===== ===== Пользовательские функции =====
 +Оператор **pass** можно использовать как загрузку для пустой функции\\
  
 ==== Определение и вызов ==== ==== Определение и вызов ====
- +Функция сама является объектом, ссылкой, которую можно присваивать переменны, передавать и т.д.\\ 
- +Поддерживает стандартные атрибуты, такие как: **__name__**, **__doc__**, **__sizeof__**, **__dir__** и т.д., перечень можно получить вызовом функции **dir()**\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Расположение определения ==== ==== Расположение определения ====
- +Определение должно быть перед вызовом, при использовании функции **main**, по сути не актуально\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Необязательные параметры ==== ==== Необязательные параметры ====
 +Необязательность имеется ввиду значение по умолчанию, определение по ключам (по имени) поддерживается априори и порядок не имеет значения\\
 +Все **аргументы передаются по ссылке** поэтому изменяемые типы данных **могут изменить исходную переменную**, чтобы избежать, можно передавать копию, (func(var.copy()))\\
  
- +:!: Что касается предопределенных переменных - они **похоже статические** и **могут накапливать значение** при повторных вызовах, можно указать значение **None**\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Переменное число параметров ==== ==== Переменное число параметров ====
 +Если перед переменной указать звездочку, то принимать сможем **любое кол-во** аргументов, придут они **в кортеже**\\
 +Если две звездочки, тогда в словаре\\
 +Если указать первое затем второе, то функция примет любое кол-во переменных. Указанные между ними параметры можно будет передавать только по именам.\\
  
 +Если функция не должна принимать переменного кол-ва параметров, но должна принимать только по именам, нужно указать звездочку без имени переменной\\
  
 <code python> <code python>
-</code>+# Произвольное кол-во параметров 
 +def func(*t): 
 +  for i in t: 
 +    ...
  
-<code python>+# Ф-я примет любые параметры 
 +def func(*x, **y): 
 +  ... 
 + 
 +# Аргументы только по именам 
 +def func(x=1, y=2, *, a): 
 +  ...
 </code> </code>
  
  
 ==== Анонимные функции ==== ==== Анонимные функции ====
- +т.н. **лямбда функция**, без имени, в качестве значения возвращает ссылку на объект-функцию, которую можно передать или присвоить переменной\\
 <code python> <code python>
-</code>+f1= lambda: 10 + 20 
 +f2= lambda x, y: x + y # аргументы
  
-<code python>+print(f1()) 
 +print(f2(10, 20))
 </code> </code>
  
  
 ==== Функции-генераторы ==== ==== Функции-генераторы ====
 +При последовательных вызовах, возвращает очередной элемент какой-либо последовательности, приостановить выполнение в текущем вызове можно оператором **yield**\\ 
 +Использование этого оператора собсна и делает обычную функцию функцией-генератором\\ 
 +Удобно при обработке действительно большой последовательности, в таком случае она не будет вся загружаться в память, а будет обрабатываться последовательно\\ 
 +Эти функции поддерживают метод **__next()__**, позволяющий получить следующее значение\\ 
 +Можно вкладывать генераторы\\
  
 <code python> <code python>
-</code>+def func(x, y): 
 +  for i in range(1, x+ 1): 
 +    yield i ** y
  
-<code python>+i= func(3, 3) 
 +print(i.__next__()) # Выведет: 1 (1 ** 3) 
 +print(i.__next__()) # Выведет: 8 (2 ** 3) 
 +print(i.__next__()) # Выведет: 27 (3 ** 3) 
 +print(i.__next__()) # Исключение StopIteration
 </code> </code>
  
  
 ==== Декораторы функции ==== ==== Декораторы функции ====
 +Обычные функции, выполняются перед вызовом целевой, для этого нужно указать "@mydecor" перед определением целевой\\ 
 +В аргументе декора передается ссылка на целевую функцию, видимо\\
  
 <code python> <code python>
-</code>+def deco(f): 
 +  ... 
 +  return f # ссылка на целевую ф-ю
  
-<code python>+@deco 
 +def func(x): 
 +  ... 
 +   
 +print (func(10))
 </code> </code>
  
  
 ==== Рекурсия ==== ==== Рекурсия ====
- +Все как обычно, только **кол-во вызовов ограничено** (1К), превышение вызывает исключение\\
- +
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Глобальные и локальные переменные ==== ==== Глобальные и локальные переменные ====
- +Глобальные переменные те что определены за пределами любой функции, и доступны во всем скрипте\\ 
- +Для обращение к ней из функции, возможно нужно внутри определить ее ключевым словом **global**, т.к. в локальной области по умолчанию переменные не пересекаются с глобальными, даже с одинаковым названием\\
-<code python> +
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Вложенные функции ==== ==== Вложенные функции ====
- +Внутри вложенной функции **доступна область видимости** родительской функции\\ 
- +Доступны но изменить во вложенной так просто нельзя видимо, нужно объявить ее там оператором **nonlocal**\\ 
-<code python> +Не забываем что переменные передаются ссылками\\
-</code> +
- +
-<code python> +
-</code>+
  
  
 ==== Аннотации функций ==== ==== Аннотации функций ====
- +Документирование аргументов функций\\
 <code python> <code python>
 +# Описание после двоеточия, можно указать выражение
 +def func(a: "Нужная переменная", b: 10+2= 12) 
 </code> </code>
- 
-<code python> 
-</code> 
- 
-<code python> 
-</code> 
- 
- 
  
develop/pyton/date.1645282382.txt.gz · Последнее изменение: 2022/02/19 14:53 — admin