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

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


develop:pyton:date

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:pyton:date [2022/02/19 16:53]
admin [Модуль "datetime" манипуляции с ДТ]
develop:pyton:date [2022/02/20 10:32] (текущий)
admin
Строка 141: Строка 141:
  
 <code python> <code python>
-</code> 
 import calendar import calendar
  
Строка 149: Строка 148:
 c= calendar.TextCalendar(0) c= calendar.TextCalendar(0)
 print(c.formatyear(2017)) print(c.formatyear(2017))
-<code python> 
 </code> </code>
  
  
 === Другие функции === === Другие функции ===
-  * **weekheader()** -  +  * **weekheader()** - строка- аббревиатур дней недели 
-  * **isleap()** -  +  * **isleap()** - проверка года високосный 
-  * **weekday()** - +  * **weekday()** - номер дня недели указанной даты
  
 Атрибуты: Атрибуты:
Строка 177: Строка 175:
  
 ===== Пользовательские функции ===== ===== Пользовательские функции =====
 +Оператор **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.1645289601.txt.gz · Последнее изменение: 2022/02/19 16:53 — admin