Please enable JavaScript.
Coggle requires JavaScript to display documents.
3.3 Функции и функциональное программирование в Python часть 2 - Coggle…
3.3 Функции и функциональное программирование в Python часть 2
Функции и ООП
Функция -
объект
класса
function
, имеющий атрибуты и методы
dir(
имяФункции
)
- выводит все члены класса
Можно объявить
псевдоним функции
(
alias
), приравняв переменную и обращаясь потом к переменной с круглыми скобками
имяПеременной = функция()
..
имяПеременной() #возвращает обновленное значение функции
функции могут быть членами структур (списков, словарей)
функции могут иметь
атрибуты
(
имяФункции.имяАтрибута
), например, счетчик вызова функции
к данным атрибутам можно обращаться как к атрибуту любого другого объекта
Лямбда-функция (lambda)
(лямбда-выражения) - функция без идентификатора (имени)
lambda
параметр1, параметр2, ..: выражение
Параметры - необязательные позиционные атрибуты
могут объявляться значения по умолчанию
Выражение может содержать логические выражения, тернарные операции, но не условные инструкции (
if .. :
) или циклы
Функция возвращает результат выражения, оператор
return
не применяется
имяПеременной
= lambda .. : ..
#объявление функции
имяПеременной( параметры ) #вызов функции
использование в качестве сокращенной записи обычной функции с вызовом по псевдониму
( lambda .. : .. ) (
параметры
)
#объявление и вызов из строки
Список (коллекция) функций
ИмяСписка
= [
-> Lambda .. : .. ,
-> Lambda .. : .. ,
..
]
Функции потоковой обработки
Map (
имяФункции, итерируемыйОбъект
)
- вызов функции для всех членов структуры
часто применяется для преобразования последовательностей с использованием простых лямбда-функций
filter()
- фильтрация списков
результатСписок
= list ( filter (lambda x:
условиеФильтрацииПоЗначениюХ, исходныйСписок
))
Эффективны в сочетании с регулярными выражениями
zip()
- поэлементное объединение итерируемых объектов в список кортежей, длина которого равна длине самого короткого исходного объекта
возвращает объект, который можно преобразовать в список
результатСписок
= list(zip(.., ..))
[(э1_1, э2_1, ..),
(э1_2, э2_2, ..),
..
]
аналогична функция
zip_longest(
посл1, посл2, ..,
fillvalue=
значениеЗаполнитель
)
длина списка определяется длиной наибольшей последовательности, пустые элементы заполняются типовым значением
требует ее подключения из модуля
itertools
from itertools import zip_longest
enumerate(
последовательность
)
- перевод последовательности в список кортежей, состоящих из порядкового номера от нуля и элемента последовательности
Рекурсия
Вызов функции из самой себя с другими параметрами
в Python реализовано, как возврат в качестве значения самой функции
Через явно заданные (структурные) функции
def функция(
параметры1
):
-> if .. :
->-> return
значениеКонцаРекурсии
-> return функция(
параметры2
)
Через лямбда-функции
функция
= lambda
параметры1
:
функция(параметры2)
if .. else
значениеКонцаРекурсии
Ограничено 1000 вложений
Регулярные выражения
import re
- загрузка библиотеки
основной синтаксис шаблона регулярок
\d
- цифра
\d\d
- две подряд цифры
\d{n}
- n подряд цифр
\b
- граница слова
\b\w{n}\b
- слово из
n
букв
\w
- буква
[....]?
- любой из указанных символов (или из диапазона) либо пусто
\
..
+
- последовательность произвольной длины
(?:
..
|
..
)
- выбор одного из вариантов
Хабр : :recycle:
методы
re
Синтаксис при вызове методов
re
re.
метод
(r
шаблон, строкаПоиска
)
результат =
re.match()
поиск (проверка наличия) шаблона в начале строки
результат =
re.search()
поиск (проверка наличия) шаблона в любом месте строки
Возвращает объект
результат
.start(), .end()
- начальная и конечная позиции подстроки в строке
результат.
group(0)
- вывод искомой подстроки
возвращает только первое совпадение
результат =
re.findall()
поиск (проверка наличия) всех вхождений шаблона в любом месте строки
возвращает список всех вхождений
результат =
re.split()
разделяет строку по вхождениям шаблона (можно указать максимальное число обрабатываемых вхождений, добавив параметр
maxsplit =
n)
возвращает список разделенных участков исходной строки
результат =
re.sub(r
шаблон, заменяющийФрагмент, строкаПоиска
)
Ищет шаблон в строке и заменяет его на указанную подстроку. Если шаблон не найден, строка остается неизменной.
возвращает результат
шаблон =
re.compile()
Упаковывает выражение в объект
синтаксис применения
результат = шаблон.метод( строкаПоиска )
https://tproger.ru/translations/regular-expression-python
:recycle: