что такое def в python

Функции: объявление и вызов

Вот мы с вами и подошли к одному из фундаментальных моментов в изучении языка Python – функциям. Что это такое? Смотрите. Например, уже знакомая вам функция

выводит сообщения в консоль. Фактически же при ее вызове выполняется определенный фрагмент программы, результатом которого и является вывод информации в заданном виде. И это очень удобно. Благодаря наличию таких функций нам не нужно каждый раз писать дублирующие инструкции для выполнения типовых операций. Собственно, это главное предназначение функций – многократное выполнение определенного фрагмента программы.

Язык Python позволяет программисту создавать свои собственные функции. Для этого используется следующий синтаксис:

def ([список аргументов]):
оператор 1
оператор 2

оператор N

Здесь имя функции придумывается программистом подобно именам переменных и, так как функция – это определенное действие, то ее имя следует выбирать как глагол, например:

go, show, get, set и т.п.

Далее, идет набор операторов, которые образуют тело функции. Именно они начинают выполнятся при ее вызове.

Давайте зададим простейшую функцию, которая будет выводить «hello» в консоль:

Смотрите, мы здесь придумали имя функции «sayHello», записали пустые круглые скобки без аргументов и через двоеточие определили тело функции в виде конструкции print(«hello»). Но это лишь определение функции. Самого вызова здесь еще нет и если запустить программу, то ничего не произойдет.

Чтобы вызвать эту функцию, нужно указать ее имя и в конце обязательно поставить круглые скобки даже если мы не передаем ей никаких аргументов:

Эти круглые скобки являются оператором вызова функции с указанным именем. Теперь, при запуске программы в консоли появится сообщение «hello».

Имя функции без круглых скобок – это фактически ссылка на функцию:

то есть, ссылка на специальный объект, представляющий ту или иную функцию. А раз это ссылка, то мы можем выполнить такую операцию:

тем самым определить ее синоним и вызвать ее уже через это второе имя:

Как мы говорили в самом начале, функции, как правило, создаются для их многократного вызова. И действительно, мы теперь, можем ее вызывать в любом месте нашей программы необходимое число раз, например, так:

Здесь будет уже два вызова этой функции. И так далее. Причем, обратите внимание, мы вызываем функцию только после ее определения. То есть, если записать ее вызвать в самом начале программы, то возникнет ошибка, т.к. данная функция не была определена. Это вроде как:

«сначала нужно испечь пирог и только потом можно его есть.»

Также и с функциями: мы их сначала определяем и только потом можем вызывать. Поэтому определение функций обычно идет в самом начале, а потом уже их вызовы в основной программе.

Если нужно определить еще одну функцию, то мы ее можем записать после первой:

Имена функций должны быть уникальными (также как и имена переменных), поэтому я назвал ее myAbs, т.к. функция abs уже существует. И предполагаю, что она будет вычислять модуль переданного ей числа. Соответственно, в круглых скобках обозначаю этот аргумент. Если теперь мы ее вызовем:

то увидим значение None. Это произошло потому, что функция myAbs явно не возвращает никакого значения. По идее, мы ожидаем возврата переменной x. Для этого нужно записать оператор return, после которого через пробел указываем возвращаемую величину:

Если нужно создать функцию, принимающую два аргумента, например, для вычисления площади прямоугольника, то это делается так:

То есть, аргументы перечисляются через запятую, а тело функции состоит всего из одного оператора return, в котором сразу выполняются необходимые вычисления.

Вызовем эту функцию:

И увидим результат ее работы – значение 31,0. При этом, на первое значение 10 ссылается первый аргумент w, а на второе 5.5 – второй аргумент h. Вот так можно определять различное число аргументов у функций.

Далее, при вызове функций мы должны им передавать ровно столько параметров, сколько указано в их определении. Например, вот такие вызовы работать не будут:

Здесь указано или слишком много, или слишком мало фактических параметров.

Однако у любой функции можно добавить формальные параметры со значениями по умолчанию:

И теперь, можно вызвать эту функцию так:

Смотрите, если формальный параметр не указан, то берется его значение по умолчанию. Если же мы его явно задаем, то берется переданное значение. Здесь нужно помнить только одно правило: формальные аргументы должны быть записаны последними в списке аргументов функции. То есть, вот такая запись:

приведет к синтаксической ошибке.

Теперь, давайте добавим этой функции еще один вот такой формальный параметр:

И функция будет выводить сообщение в формате: «Message»+sep+msg+end. Вызвать эту функцию мы можем таким образом:

и каждому параметру здесь будет соответствовать свое значение в соответствии с указанным порядком. А можно ли вызвать эту функцию, указав только первый и последний аргумент? Оказывается да, Python позволяет это делать. Вот таким образом:

Мы здесь вторым аргументом явно указываем имя формального параметра и присваиваем ему желаемое значение. В результате аргументы msg и sep будут принимать переданные значения, а аргумент end – значение по умолчанию. Это называется именованные параметры, когда мы указываем не просто значение, но еще и имя параметра.

Если нам требуется сразу вернуть несколько значений, то это можно сделать так. Предположим наша функция будет сразу определять и периметр и площадь прямоугольника:

И, далее, вызываем ее:

получаем результат в виде кортежа из двух чисел. Или, так:

Аналогичным образом можно возвращать и списки и словари и вообще любые типы данных.

Далее, в теле функции можно записывать самые разные конструкции языка Python. Например, для возведения числа в целую степень, можно определить такую функцию:

И, затем, вызвать ее:

Интересной особенностью Python в определении функций является возможность переопределять уже существующие функции. Например, у нас задана вот такая функция:

Тогда ниже мы можем ее переопределить, если укажем то же самое имя:

Теперь, при ее вызове:

увидим выполнение последнего, переопределенного варианта. Если дальше ее переопределить вот так:

то все равно будет доступна только одна такая функция, но теперь уже с одним обязательным аргументом:

Когда это может пригодиться на практике? Например, если мы хотим определить некоторую функцию в зависимости от условия:

Здесь при значении переменной TYPE_FUNC равной True будет определен первый вариант функции, а иначе – второй вариант. Иногда это бывает полезно.

Элементы функционального подохда к программированию

При написании программ приветствуется такой подход, который называется функциональным программированием. Продемонстрирую его на следующем примере. Предположим, нам нужна функция, которая находит максимальное значение из двух чисел:

И вызвать мы ее можем так:

Затем, нам потребовалась функция, которая бы находила максимальное из трех чисел. Как ее можно реализовать? Используя идею функционального программирования, это можно сделать следующим образом:

Смотрите, здесь оператор return возвращает значение, которое возвращает функция max2. Но, прежде чем она будет выполнена, вызовется другая функция max2, которая определит максимальное среди чисел b и c. То есть, прежде чем вызвать первую функцию max2 необходимо вычислить ее параметры: первый просто берется их x, а второй вычисляется вложенной функцией max2. Вот так это работает и вот что из себя представляет элемент функционального подхода к программированию.

Причем, благодаря гибкости языка Python, мы можем вызвать эту функцию и для нахождения максимальной строки:

так как строки могут спокойно сравниваться между собой. И вообще, любые величины, которые можно сравнивать на больше и меньше, можно подставлять в качестве аргументов функции max3 и max2.

Задания для самоподготовки

1. Задайте и вызовите функцию, которая вычисляет площадь прямоугольника.

2. Необходимо создать функцию, которая в зависимости от значения формального параметра type будет вычислять или площадь или периметр прямоугольника.

3. Написать функцию поиска максимального значения из переданного ей списка значений.

4. Написать функцию вычисления произведения значений элементов переданного ей списка.

Видео по теме

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#1. Первое знакомство с Python Установка на компьютер

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#2. Варианты исполнения команд. Переходим в PyCharm

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#3. Переменные, оператор присваивания, функции type и id

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#4. Числовые типы, арифметические операции

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#5. Математические функции и работа с модулем math

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#6. Функции print() и input(). Преобразование строк в числа int() и float()

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#7. Логический тип bool. Операторы сравнения и операторы and, or, not

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#8. Введение в строки. Базовые операции над строками

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#9. Знакомство с индексами и срезами строк

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#10. Основные методы строк

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#11. Спецсимволы, экранирование символов, row-строки

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#12. Форматирование строк: метод format и F-строки

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#14. Срезы списков и сравнение списков

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#15. Основные методы списков

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#16. Вложенные списки, многомерные списки

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#17. Условный оператор if. Конструкция if-else

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#18. Вложенные условия и множественный выбор. Конструкция if-elif-else

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#19. Тернарный условный оператор. Вложенное тернарное условие

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#20. Оператор цикла while

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#21. Операторы циклов break, continue и else

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#22. Оператор цикла for. Функция range()

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#23. Примеры работы оператора цикла for. Функция enumerate()

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#24. Итератор и итерируемые объекты. Функции iter() и next()

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#25. Вложенные циклы. Примеры задач с вложенными циклами

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#26. Треугольник Паскаля как пример работы вложенных циклов

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#27. Генераторы списков (List comprehensions)

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#28. Вложенные генераторы списков

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#29. Введение в словари (dict). Базовые операции над словарями

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#30. Методы словаря, перебор элементов словаря в цикле

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#31. Кортежи (tuple) и их методы

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#32. Множества (set) и их методы

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#33. Операции над множествами, сравнение множеств

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#34. Генераторы множеств и генераторы словарей

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#35. Функции: первое знакомство, определение def и их вызов

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#36. Оператор return в функциях. Функциональное программирование

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#37. Алгоритм Евклида для нахождения НОД

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#38. Именованные аргументы. Фактические и формальные параметры

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#39. Функции с произвольным числом параметров *args и **kwargs

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#40. Операторы * и ** для упаковки и распаковки коллекций

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#41. Рекурсивные функции

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#42. Анонимные (lambda) функции

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#43. Области видимости переменных. Ключевые слова global и nonlocal

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#44. Замыкания в Python

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#45. Введение в декораторы функций

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#46. Декораторы с параметрами. Сохранение свойств декорируемых функций

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#47. Импорт стандартных модулей. Команды import и from

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#48. Импорт собственных модулей

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#49. Установка сторонних модулей (pip install). Пакетная установка

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#50. Пакеты (package) в Python. Вложенные пакеты

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#51. Функция open. Чтение данных из файла

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#52. Исключение FileNotFoundError и менеджер контекста (with) для файлов

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#53. Запись данных в файл в текстовом и бинарном режимах

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#54. Выражения генераторы

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#55. Функция-генератор. Оператор yield

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#56. Функция map. Примеры ее использования

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#57. Функция filter для отбора значений итерируемых объектов

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#58. Функция zip. Примеры использования

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#59. Сортировка с помощью метода sort и функции sorted

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#60. Аргумент key для сортировки коллекций по ключу

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#61. Функции isinstance и type для проверки типов данных

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#62. Функции all и any. Примеры их использования

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#63. Расширенное представление чисел. Системы счисления

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#64. Битовые операции И, ИЛИ, НЕ, XOR. Сдвиговые операторы

что такое def в python. default. что такое def в python фото. что такое def в python-default. картинка что такое def в python. картинка default.

#65. Модуль random стандартной библиотеки

© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта

Источник

Функции в Python – руководство для начинающих

Python позволяет разделить большую программу на основные строительные блоки, известные как функции.

Что такое функция в Python?

Функции в Python – это организованный блок многократно используемого кода, который можно вызывать при необходимости.

Функция содержит набор программных операторов, заключенных в <>. Функцию можно вызывать несколько раз, чтобы обеспечить возможность повторного использования и модульность программы Python.

Функция помогает программисту разбить программу на более мелкие части. Она очень эффективно организует код и избегает повторения кода. По мере роста программы функция делает ее более организованной.

Python предоставляет нам различные встроенные функции, такие как range() или print(). Пользователь также может создавать свои функции, которые можно назвать пользовательскими функциями.

В основном есть два типа функций:

В этом руководстве мы обсудим функции, определяемые пользователем.

Преимущество функций в Python

У функций Python есть следующие преимущества:

Создание

Python предоставляет ключевое слово def для определения функции. Синтаксис функции определения приведен ниже.

Давайте разберемся с синтаксисом определения функций.

Вызов функции

В Python после создания функции мы можем вызывать ее из другой функции. Перед вызовом функция должна быть определена; в противном случае интерпретатор Python выдает ошибку. Чтобы вызвать функцию, используйте имя функции, за которым следуют круглые скобки.

Рассмотрим простой пример, который выводит сообщение «Hello World».

Оператор возврата return

Оператор return используется в конце функции и возвращает результат функции. Он завершает выполнение функции и передает результат туда, где функция вызывается. Оператор return не может использоваться вне функции.

Он может содержать выражение, которое оценивается, и значение возвращается вызывающей функции. Если оператор return не имеет выражения или не существует сам по себе в функции, он возвращает объект None.

Рассмотрим следующие примеры:

Выход:
The sum is: 30

В приведенном выше коде мы определили функцию с именем sum, и у нее есть оператор c = a + b, который вычисляет заданные значения, а результат возвращается оператором return вызывающей функции.

Пример 2. Создание функции без оператора возврата

В приведенном выше коде мы определили ту же функцию без оператора return, так как мы видим, что функция sum() вернула объект None вызывающей функции.

Аргументы в функции

Аргументы – это типы информации, которые можно передать функции. Аргументы указаны в скобках. Мы можем передать любое количество аргументов, но они должны быть разделены запятой.

Рассмотрим следующие примеры, содержащий функцию, которая принимает строку в качестве аргумента.

Вызов по ссылке в Python

В Python вызов по ссылке означает передачу фактического значения в качестве аргумента функции. Все функции вызываются по ссылке, т. е. все изменения, внесенные в ссылку внутри функции, возвращаются к исходному значению, на которое ссылается ссылка.

Пример 1. Передача неизменяемого объекта(списка)

Выход:
list inside function = [10, 30, 40, 50, 20, 30]
list outside function = [10, 30, 40, 50, 20, 30]

Пример 2. Передача изменяемого объекта(строки)

Выход:
печать строки внутри функции: Hi I am there Hows you
печать строки вне функции: Hi I am there.

Типы аргументов

Может быть несколько типов аргументов, которые могут быть переданы во время вызова функции.

Обязательные

Мы можем предоставить аргументы во время вызова функции. Обязательные аргументы – это аргументы, которые необходимо передать во время вызова функции с точным совпадением их позиций в вызове функции и определении функции. Если какой-либо из аргументов не указан в вызове функции или положение аргументов изменено, интерпретатор Python покажет ошибку.

Рассмотрим следующие примеры.

Выход:
Введите имя: Джон
привет, Джон

Пример 2.

Выход:
Введите основную сумму: 5000
Введите процентную ставку: 5
Введите время в годах: 3
Простой процент: 750,0

Пример 3

Выход:
TypeError: calculate() отсутствует 1 обязательный позиционный аргумент: ‘b’

Аргументы по умолчанию

Python позволяет нам инициализировать аргументы при определении функции. Если значение любого из аргументов не предоставляется во время вызова функции, то этот аргумент может быть инициализирован значением, указанным в определении, даже если аргумент не указан при вызове функции.

Выход:
My name is John and age is 22
Пример 2.

Выход:
My name is john and age is 22
My name is David and age is 10

Аргументы переменной длины(* args)

В больших проектах иногда мы можем не знать количество аргументов, которые нужно передать заранее. В таких случаях Python предоставляет нам гибкость, предлагая значения, разделенные запятыми, которые внутренне обрабатываются как кортежи при вызове функции. Используя аргументы переменной длины, мы можем передавать любое количество аргументов.

Рассмотрим следующий пример:

Выход:
type of passed argument is
printing the passed arguments.
john
David
smith
nick

В приведенном выше коде мы передали * имена в качестве аргумента переменной длины. Мы вызвали функцию и передали значения, которые внутри обрабатываются как кортежи. Кортеж – это итеративная последовательность, такая же, как и список. Чтобы напечатать заданные значения, мы повторили имена * arg, используя цикл for в Python.

Аргументы ключевого слова(** kwargs)

Python позволяет нам вызывать функцию с аргументами ключевых слов. Такой вызов функции позволит нам передавать аргументы в случайном порядке.

Имя аргументов рассматривается как ключевое слово и сопоставляется при вызове и определении функции. Если такое же совпадение найдено, значения аргументов копируются в определение функции.

Рассмотрим следующие примеры.

Выход:
printing the message with John and hello

Пример 2. С указанием значений в другом порядке при вызове.

Выход:
Simple Interest: 1900.0
Если мы предоставим другое имя аргументов во время вызова функции, будет выдана ошибка.

Рассмотрим следующий пример.

Выход:
TypeError: simple_interest() got an unexpected keyword argument ‘time’

Python позволяет нам предоставлять сочетание необходимых аргументов и аргументов ключевого слова во время вызова функции. Однако обязательный аргумент не должен указываться после аргумента ключевого слова, т. е. после того, как аргумент ключевого слова встречается в вызове функции, следующие аргументы также должны быть аргументами ключевого слова.

Рассмотрим следующие примеры.

Выход:
SyntaxError: positional argument follows keyword argument

Python предоставляет возможность передавать несколько аргументов ключевого слова, которые могут быть представлены как ** kwargs. Похож на * args, но сохраняет аргумент в формате словаря. Этот тип аргументов полезен, когда мы не знаем заранее количество аргументов.

Рассмотрим следующий пример:

Пример 6. Многие аргументы используют аргумент ключевого слова.

Объем переменных

Объем переменных зависит от места, где переменная объявляется. Переменная, объявленная в одной части программы, может быть недоступна для других частей.

В Python переменные определяются с двумя типами областей видимости:

Известно, что переменная, определенная вне любой функции, имеет глобальную область видимости, тогда как переменная, определенная внутри функции, имеет локальную область видимости.

Рассмотрим следующий пример.

Пример 1. Локальная переменная

Выход:
The sum is 60
Value of sum outside the function: 0

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *