Функция def python зачем

Функции и их аргументы

Python 3 логотип

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

Именные функции, инструкция def

Функция в python — объект, принимающий аргументы и возвращающий значение. Обычно функция определяется с помощью инструкции def.

Определим простейшую функцию:

Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y.

Теперь мы ее можем вызвать:

 
  Функция может и не заканчиваться инструкцией return, при этом функция вернет значение None:

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

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

    Как видно из примера, args - это кортеж из всех переданных аргументов функции, и с переменной можно работать также, как и с кортежем.

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

В переменной kwargs у нас хранится словарь, с которым мы, опять-таки, можем делать все, что нам заблагорассудится.

Анонимные функции, инструкция lambda

Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее. Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной, как делали мы инструкцией def func():

 

Для вставки кода на Python в комментарий заключайте его в теги

  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов

Источник

Функции Python

Основы

Одним из главных принципов программирования является принцип DRY – Don’t Repeat Yourself (не повторяйся). Этот принцип гласит: не стоит в разных местах кода использовать одинаковые блоки. Один из способов сделать это — использовать функции. Функция – это часть кода, которой присвоено имя и к этому коду можно обращаться из других частей программы по имени. Python, как всегда, даёт нам удобный инструментарий для реализации функционального программирования.

Определение

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

def capitalaizer(text): return text.capitalize()+'!' var = capitalaizer('hello world') print(var) # Вывод: Hello world!

Обратите внимание на ключевое слово def – оно необходимо для объявления функции. После def указывается имя, затем двоеточие, а следом идёт тело функции: последовательность инструкций, объединённая в один блок отступом слева.

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

В примере выше именем функции является capitalaizer, а тело состоит всего из одной строки. В теле мы указали, что функция возвращает модифицированную переменную text, но можно было бы её переписать без использования return:

def capitalaizer(text): print('Печатаем внутри функции:', end=' ') print(text.capitalize()+'!') var = capitalaizer('hello world') print('Печатаем значение, возвращаемое функцией:', end=' ') print(var) print('и его тип:', end=' ') print(type(var)) # Вывод: Печатаем внутри функции: Hello world! Печатаем значение, возвращаемое функцией: None и его тип:

Как мы и говорили, функция вернула None, а модифицированная строка распечатана внутри функции. Такие функции называются «не чистыми» и часто являются признаком плохого кода.

Вызовы

Для вызова функции, которая возвращает переменную, нужно ввести:

Особенности

Если функция очень короткая, то Пайтон позволяет записать её в одну строку:

def capitalaizer(text): return text.capitalize()+'!'

Но злоупотреблять таким стилем программирования не стоит. В среднем, работа программиста состоит на 10% из написания и на 90% из чтения своего и чужого кода. Одной из основ философии Питона является то, что код должен быть максимально удобочитаемым.
Да, любители писать всё в одну строку чаще всего сами создают себе сложности. Но когда же стоит использовать такой стиль? У меня есть однозначный ответ: при работе с консолью. Именно при работе в Python Shell приходится писать много кода вручную, и Вы его, скорее всего, не будете перечитывать. Именно поэтому языки, разработанные специально для консоли (Bash, PowerShell, .bat), так лаконичны. Посмотрите на некоторые из их команд: cd .. ls -l.
Функции могут быть вложенными:

def capitalaizer(text): def add_volume(cap_text): return cap_text + '!' return add_volume(text.capitalize()) var = capitalaizer('hello world') print(var) # Вывод: Hello world!

Иногда без этого не обойтись, но лучше, по возможности, не использовать дополнительную вложенность – она усложняет код.

Инструкция return

Возврат значения

В среде программистов Вы можете часто встретить словосочетание «возвращает значение», но функция его ни откуда не заимствовала – почему же она его «возвращает»?

Чтобы это понять, надо разобраться, как устроен поток выполнения программы. В Пайтоне код выполняется строка за строкой. Но, когда в строке встречается имя функции, поток выполнения переходит в тело функции (вспомните, в самом начале мы говорили, что функция – это именованная область кода). После выполнения тела функции, поток выполнения возвращается в то место, откуда была вызвана функция. При этом функция передаёт какое-то значение. Так что «функция возвращает значение» — лишь сокращение от «функция возвращает управление основному потоку выполнения программы и передаёт значение».

Возврат нескольких значений

Пока что функция возвращала только одно значение или не возвращала ничего (объект None). Существует возможность возвращать несколько значений. Для этого их надо перечислить через запятую:

Источник

Читайте также:  Make object subscriptable python
Оцените статью