Содержание
- 2. Функциональный стиль Благодаря функциональным возможностям языка Python, на нем многое можно написать в одну строчку. Считываем
- 3. Функциональный стиль заполняем таблицу N * M числами от 1 до M * N змейкой: [
- 4. Рекурсия Функции могут вызывать и другие функции, и даже вызывать сами себя. Рассмотрим это на примере
- 5. Рекурсия При этом программирование рекурсии выглядит так. Функция должна сначала проверить, не является ли переданный набор
- 6. Рекурсия Потылицина Е.М.
- 7. Вычисление суммы натуральных чисел от 1 до n def sum(n): if n == 1: return 1
- 8. Проверка строки на палиндромность Напишем функцию IsPalindrome, которая возвращает значение типа bool в зависимости от того,
- 9. lambda lambda a, b: a + b Может быть записана как элемент любой конструкции python a
- 10. lambda Обычно lambda функция возвращает какой-то результат и для этого и используется lst = [5, 3,
- 11. lambda r = get_filter(lst, lambda x: x % 2 ==0) print(r) [0, -6, 8, 10] Ограничения:
- 12. nonlocal Потылицина Е.М.
- 13. nonlocal Потылицина Е.М.
- 14. nonlocal def outer(): x = 1 def inner(): x = 2 print(“inner: “, x) inner() print(‘outer:
- 15. nonlocal def outer(): x = 1 def inner(): nonlocal x x = 2 print(“inner: “, x)
- 16. Замыкания def say_name(name): def say_goodbye(): print (‘Goodbye, ‘ + name + ‘!’) say_goodbye() say_name(‘Ivan’) Goodbye, Ivan!
- 17. def say_name(name): def say_goodbye(): print (‘Goodbye, ‘ + name + ‘!’) return say_goodbye say_name(‘Ivan’) пусто, потому
- 18. def say_name(name): def say_goodbye(): print (‘Goodbye, ‘ + name + ‘!’) return say_goodbye f = say_name(‘Ivan’)
- 19. Если имеется глобальная ссылка f на внутреннее локальное окружение say_goodbye, то оно продолжает существовать и не
- 20. Замыкание Эффект существования локальных окружений и продолжение использования внешних окружений - замыкания f (принадлежит глобальной области
- 21. при каждом вызове say_name будет создаваться свое новое независимое локальное окружение Потылицина Е.М.
- 22. def say_name(name): def say_goodbye(): print (‘Goodbye, ‘ + name + ‘!’) return say_goodbye f = say_name(‘Ivan’)
- 23. Например можно создать функцию счетчик, которая при каждом новом запуске увеличивает свое значение на 1 def
- 24. def strip_string(strip_chars=‘ ‘): def do_strip(string): return string.strip(strip_chars) return do_strip strip1 = strip_string() strip2 = strip_string(‘ !?,.’)
- 25. Decorators Декораторы позволяют «декорировать» функцию. Декораторы можно представить себе как функции, которые меняют функциональность другой функции.
- 26. Создадим простую функцию def simple_func(): #выполняем действия return А теперь мы хотим добавить в функцию дополнительные
- 27. Существует два варианта, как это сделать: добавить новую функциональность в старую функцию создать новую функцию, скопировать
- 28. Но что, если вы затем захотите убрать эту новую функциональность? Можно ли включать/выключать функциональность? Декораторы позволяют
- 29. Декоратор Декораторы — это, по сути, просто своеобразные «обёртки», которые дают нам возможность делать что-либо до
- 30. Вы можете легко добавить новую функциональность с помощью декоратора: @some_decorator def simple_func(): #выполняем действия return Потылицина
- 31. Подробнее Создадим простую функцию def func(): return 1 Поскольку функции являются объектами, мы можем сохранить эту
- 32. Пример 1 def hello(): return "Привет!" hello() Привет! greet = hello # связываем функцию hello с
- 33. Пример 2 def hello (name = ‘Мария’): #функция со значением по умолчанию print (‘Мы запустили функцию
- 34. определим функцию внутри этой функции def hello (name = ‘Мария’): #функция со значением по умолчанию print
- 35. добавим еще одну вложенную функцию: def hello(name='Name'): print('Запущена функция hello()') def greet(): return '\t Мы находимся
- 36. hello() Запущена функция hello() Мы находимся внутри функции greet() Мы находимся внутри функции welcome() Теперь мы
- 37. def hello(name='Name'): def greet(): return '\t Мы находимся внутри функции greet()' def welcome(): return "\t Мы
- 38. Теперь посмотрим какая функция будет возвращена, если мы установим x = hello(), обратите внимание что пустые
- 39. Пояснение В операторе if/else мы возвращаем greet и welcome, а не greet() и welcome(). Это потому
- 40. Функции как параметры def hello(): return 'Hi, Name!' def other(func): print('Здесь будет указан другой код') print(func())
- 41. Создаем декоратор def new_decorator(func): #в качестве параметра другая функция def wrap_func(): #дополнительная функциональность print("Здесь находится код,
- 42. пояснение Функция new_decorator принимает на вход функцию и возвращает тоже функцию На входе любая исходная функция,
- 43. продолжение Теперь создадим функцию, которую будем декорировать def func_needs_decorator(): print(‘Эта функция нуждается в декораторе’) если мы
- 44. продолжение теперь запустим new_decorator и сохраним результат в переменную decorated_func = new_decorator(func_needs_decorator) запускаем decorated_func() Здесь находится
- 45. Теперь посмотрим, как можно переписать этот код с помощью символа @, который используется в Python для
- 46. итог Теперь, если мы захотим отключить дополнительную функциональность, то просто сделаем так #@new_decorator def func_needs_decorator(): print("Для
- 47. Структура Потылицина Е.М.
- 48. Практика рекурсия Дан список чисел, необходимо просуммировать его. Написать функцию Sum(A) 2) Дан список чисел, необходимо
- 49. Практика декораторы Написать декоратор, который оборачивает строку в теги Написать декоратор, который оборачивает строку в теги
- 50. Справочная информация для практики Строки документации Python Строки документации в Python — это строки, которые пишутся
- 52. Скачать презентацию