lambda функции
Python разрешает создание анонимных функций (например, функции, которые не связаны с именем) во время выполнения, используя конструкцию lambda. Объекты функций в этом случае создаются в форме выражений.
За ключевым словом lambda следуют один или более аргументов и далее, вслед за двоеточием, находится выражение:
lambda argl, arg2, argN: выражение.
Разницу между обычным определением функции (f 1) и lambda функции (f2) наиболее просто пояснить на примере работы программы
def f1 (х):
return х**2
f2 = lambda х: х**2 print f1(4), f2(4)
Такие конструкции удобны для создания малых функций и позволяют встраивать определения функций в программный код, который их использует.
Пространство имен в Python
С каждой точкой программы можно связать три пространства имен: локальное, глобальное и встроенное. Пространство имен определяет отображение имен в объекты.
Пространства имен создаются в различные моменты времени и имеют разную продолжительность жизни. Пространство встроенных имен создается при запуске интерпретатора и существует все время его работы. Глобальное пространство имен модуля создается, когда он считывается, и, обычно, также существует до завершения работы интерпретатора. Локальное пространство имен функции создается при вызове функции и удаляется при выходе из нее.
Имена, определяемые внутри тела функции, видны только программному коду внутри тела функции. К этим именам нельзя обратиться за пределами функции. Свойство глобальности во вмещающем модуле переменной внутри тела функции обеспечивается использованием инструкции global.
Поиск имен ведется последовательно в четырех областях видимости: локальной, затем в объемлющей функции (если таковая имеется), затем в глобальной и, наконец, во встроенной.
Модули
Программа в Python, создание и использование модулей, поиск модуля, стандартные модули, пакеты моделей.
Программа в Python
При модульном подходе к программированию большая задача разбивается па несколько более мелких, каждую из которых (в идеале) решает отдельный модуль. Важно составить такую композицию модулей, которая позволила бы свести к минимуму связи между ними. Набор функций, имеющий множество связей между своими элементами, логично расположить в одном модуле.
Программа па языке Python организована как один главный файл, к которому могут подключаться дополнительные файлы. Каждый такой файл представляет собой отдельный модуль, содержащий инструкции. Именно такая процедура реализуется при работе в среде разработки NetBeans IDE.
Модули для использования в программах на языке Python по своему происхождению делятся на обычные (написанные па Python) и модули расширения, написанные па другом языке программирования (например, на С).
Для включения модуля в программу па языке Python он должен быть импортирован главным файлом, или другими файлами программы.
Создание и использование модулей
Для создания модуля достаточно ввести программный код па языке Python в текстовый файл и сохранить его с расширением .ру. Такой файл по умолчанию считаться модулем Python. Все имена, которым выполнено присваивание на верхнем уровне модуля, станут его атрибутами (именами, ассоциированными с объектом модуля) и будут доступны для использования клиентами.
При работе в NetBeans IDE для добавление модуля в проект выбирается команда File | New File и тип файла Python. Далее в режиме диалога задается имя файла и его расположение.
Создадим, например, модуль
% module1 (file modulel.py) def times(x, y): return x * у
def add(x, у): return х + у
который содержи'!1 две функции: times и add.
Будем использовать этот модуль в главном файле main.py. Для этого применяется инструкция import:
% main (file main.py) import module1
print modulel.add(2, 3), modulel.times(’well ’, 4)
После запуска программы выводиться строка 5 well well well well
В результате выполнения инструкции import в главном модуле становиться доступным имя (modulel), которое ссылается на полный объект модуля. При обращении к его атрибутам (функциям times и add) необходимо использовать имя модуля сточкой (modulel .add () и modulel .times ()).
Для изменения имени ссылки на импортируемый модуль используется конструкция import ... as. Результатом работы программы
У, main (file main.py) import modulel as ml s = ml.add(’Import ’, ’as ’) print ml.add(s, ’ml’)
будет
Import as ml
Иногда бывает более удобно импортировать модуль не целиком, а отдельные имена из его области видимости. В этом случае используется инструкция from . .. import. В нашем примере
в/0 main (file main.py) from modulel import add print add(’Import ’, ’add’)
Импортируемое имя (add) копируется в область видимости, в которой находится сама инструкция from ... import, и его можно использовать без указания имени вмещающего модуля.
Имеется специальная форма инструкции from . . . import с использованием символа * вместо списка импортируемых имен. В этом случае импортируются все имена:
°/0 main (file main.py) from modulel import *
print add(’Import ’all’), times(’!’, 3)
;Гш:Щ'Щ:Й1;Я ^ :v ■ "Ё:: tilJ ■■) Д:Й:; ti::; г!И:Л: :i: ^ ;V ..:,: ■
Do'stlaringiz bilan baham: |