Введение в язык Питон


Функции. - часть 2


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

>>> def fib(n): # Функция, возвращающая числа Фибоначчи, не превосходящие n ... result = [1]#Этот список будет содержать числа Фибоначчи ... a, b = 0, 1 ... while b < n: ... print b, ... a, b = b, a+b ... result.append(b);#Вставление в результативный список очередного числа ... return result #Возвращение результата ... >>> # Теперь функцию можно вызвать ... fib(2000) Результат выполнения: [1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597]

В определении функций есть некоторые нюансы. Рассмотрим, к примеру, функцию range(). Её можно вызвать в 3-х разных формах – с один параметром, с двумя и с тремя. Для организации такого поведения совсем необязательно описывать три различные функции, можно применить параметры по умолчанию:

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while 1: ok = raw_input(prompt) if ok in ('д', 'да', 'yes'): return 1 if ok in ('н', 'нет', 'no', 'nop'): return 0 retries = retries - 1 if retries < 0: raise IOError, 'refusenik user' print complaint или в таком виде: i = 5

def f(arg=i): print arg

i = 6 f()#Выведет не 6, а 5

Механизм параметров по умолчанию действует так: если переменная задана при вызове функции, как её параметр, то в функцию передаётся именно это значение, иначе в функцию передаётся значение по умолчанию.

Внимание: значение по умолчанию оценивается лишь один раз, это играет роль при задании значения по умолчанию спискам, например:

def f(a, L=[]): L.append(a) return L

print f(1) print f(2) print f(3)

Результат работы программы: [1]

[1, 2]

[1, 2, 3]

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

def f(a, L=None): if L is None: L = [] L.append(a) return L




Начало  Назад  Вперед



Книжный магазин