24 октября 2012 г.

Функции


Функции, основы

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

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

Инструкции и выражения, имеющие отношение к функциям:
Инструкция Примеры
Вызов - myfunc(‘spam’, ‘eggs’, meat=ham)

def, return - def adder(a, b=1, *c):
                  return a+b+c[0]


global  - def changer():
              global x; x = ‘new’


nonlocal - def changer():
               nonlocal x; x = ‘new’


yield - def squares(x):
            for i in range(x): yield i ** 2

lambda - funcs = [lambda x: x**2, lambda x: x*3]

-----------------------------------------------------------------

Зачем нужны функции?
 - Максимизировать многократное использование программного кода и минимизировать 
    его избыточность.
 - Процедурная декомпозиция (разбитие сложной системы на части).

Создание функций:
Функции в языке Python созда
ются с помощью новой инструкции def

def создает объект и присваивает ему имя.  Когда  интерпретатор  Python встречает и выполняет инструкцию def, он создает новый объект-функцию и связывает  его с  именем функции.

Выражение  lambda создает объект  и возвращает его в виде результата. Функции могут также создаваться с помощью выражения lambda. Это по- Это позволяет  создавать  встроенные  определения  функций  там,  где  синтаксис языка не позволяет использовать инструкцию def. 

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

yield передает объект результата вызывающей программе и запоминает, где был произведен возврат.  

Аргументы передаются посредством присваивания (в виде ссылок на объекты).

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

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

Инструкция def:

def <имя>(arg1, arg2,... argN):
    <операции>

Общий вид использования инструкции.
-----------------------------------------------------------------

Инструкция def + return:

def <имя>(arg1, arg2,... argN):
    <операции>
    ...
    return <значение>

Использование инструкции def которая возвращает значение (return).
-----------------------------------------------------------------

Инструкции def исполняются во время выполнения.
Допускается вкладывать определения функций внутрь инструкций if:

if test:
    def func():        # Определяет функцию таким способом
        ...
else:
    def func():        # Или таким способом
        ...
...
func()                 # Вызов выбранной версии
-----------------------------------------------------------------

Первый пример с определением и вызовом функции:

определение:
>>> def times(x, y):   # Создать функцию и связать ее с именем
...     return x * y   # Тело, выполняемое при вызове функции
...

вызов:
>>> times(2, 4)        # Аргументы в круглых скобках
8

Как видите, функция вызывается в программе добавив скобки после ее названия. Данное выражение передает функции times два аргумента (x, y).
-----------------------------------------------------------------

Теперь посмотрим, что произойдет, если функции передать объекты совершенно разных типов:
>>> times(‘Ni’, 4)     # Функции не имеют типа
‘NiNiNiNi’

На этом заканчивается такой вот короткий обзор...

Комментариев нет:

Отправить комментарий