Функции в Питоне.
1. Функции в Питоне.
Ранее мы писали программы, вычисляющую число сочетаний из n элементов по k по данным n и k, то есть вычисляющую n!/k!(n-k)!. В этой программе необходимо три раза вычислять факториал, то есть трижды повторять одну и ту же последовательность действий. Эту последовательность лучше не повторять в программе трижды, а оформить в виде отдельной функции, которая по данной величине n вычисляет значение n!, а затем трижды использовать эту функцию. Это приводит к уменьшению размера исходного кода программы, упрощению ее разработке и улучшению читаемости.
В языке Питон функция, вычисляющая n! может выглядеть следующим образом:
def factorial(n): f=1 for i in range(1,n+1): f=f*i return f
Первая строка содержит объявление функции, состоящее из ключевого слова def
(аббревиатура
от define – определять), идентификатор функции и в скобках – список параметров, получаемых
функцией. В нашем случае функция получает единственный параметр – число n
. Завершается
определение функции двоеточием. Далее идет тело функции, как и любой блок, выделенной при помощи
отступа. В теле нашей фунции мы объявляем переменную f
, присвоив ей первоначальное значение,
равное единице, затем в цикле умножаем значение f
на все числа от 1 до n
.
После окончание цикла наша функция возвращает значение f
при помощи инструкции return
.
Теперь мы можем в любом месте нашей программы вызвать функцию factorial
для вычисления факториала
произвольного числа. С ее помощью мы можем записать программу вычисления числа сочетаний следующим образом:
print "Введите значения n и k:" n=input() k=input() print factorial(n)/(facorial(k)*factorial(n-k))
Функции могут принимать несколько параметров, тогда их необходимо перечислять через запятую.
Также функции могут вызывать другие функции (и даже сами себя). Например, мы можем реализовать
функцию binomial
, принимающую два параметра n
и k
, возвращающую число
сочетаний из n
по k
и трижды вызывающую функцию factorial
:
def binomial(n,k): return factorial(n)/(factorial(k)*factorial(n-k))
Функция может и не возвращать никаких значений, а просто выполнять последовательность действий.
Такие функции нельзя использовать в арифметических выражениях, и они могут не содержать инструкции
return
. В ряде языков, например, в Паскале, такие функции называются процедурами.
Еще процедуры и функции называют подпрограммами.
Функция может не принимать ни одного параметра, тогда список ее параметров будет пустым (и будет иметь вид пары круглых скобок).