УПРАЖНЕНИЯ
8-12 . Сэндвичи: напишите функцию, которая получает список компонентов сэндвича . Функ-
ция должна иметь один параметр для любого количества значений, переданных при вызове
функции, и выводить описание заказанного сэндвича . Вызовите функцию три раза с разны-
ми количествами аргументов .
8-13 . Профиль: начните с копии программы user_profile .py . Создайте собственный профиль
вызовом build_profile(), укажите имя, фамилию и три другие пары «ключ—значение» для
вашего описания .
8-14 . Автомобили: напишите функцию для сохранения информации об автомобиле в слова-
ре . Функция всегда должна возвращать производителя и название модели, но при этом она
может получать произвольное количество именованных аргументов . Вызовите функцию
с передачей обязательной информации и еще двух пар «имя—значение» (например, цвет
и комплектация) . Ваша функция должна работать для вызовов следующего вида:
car = make_car(‘subaru’, ‘outback’, color=’blue’, tow_package=True)
Выведите возвращаемый словарь и убедитесь в том, что вся информация была сохранена
правильно .
Хранение функций в модулях
Одно из преимуществ функций заключается в том, что они отделяют блоки кода
от основной программы. Если для функций были выбраны содержательные имена,
ваша программа будет намного проще читаться. Можно пойти еще дальше и сохра-
нить функции в отдельном файле, называемом модулем, а затем импортировать
модуль в свою программу. Команда
import
сообщает Python, что код модуля дол-
жен быть доступен в текущем выполняемом программном файле.
Хранение функций в отдельных файлах позволяет скрыть второстепенные детали
кода и сосредоточиться на логике более высокого уровня. Кроме того, функции
Хранение функций в модулях 155
можно использовать во множестве разных программ. Функции, хранящиеся в от-
дельных файлах, можно передать другим программистам без распространения
полного кода программы. А умение импортировать функции позволит вам исполь-
зовать библиотеки функций, написанные другими программистами.
Существует несколько способов импортирования модулей; все они кратко рас-
сматриваются ниже.
Импортирование всего модуля
Чтобы заняться импортированием функций, сначала необходимо создать модуль.
Модуль представляет собой файл с расширением
.py
, содержащий код, который
вы хотите импортировать в свою программу. Давайте создадим модуль с функци-
ей
make_pizza()
. Для этого из файла
pizza .py
следует удалить все, кроме функции
make_pizza()
:
pizza.py
def make_pizza(size, *toppings):
"""Выводит описание пиццы."""
print("\nMaking a " + str(size) +
"-inch pizza with the following toppings:")
for topping in toppings:
print("- " + topping)
Теперь создайте отдельный файл с именем
making_pizzas .py
в одном каталоге с
pizza .
py
. Файл импортирует только что созданный модуль, а затем дважды вызывает
make_pizza()
:
making_pizzas.py
import pizza
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
В процессе обработки этого файла строка
import pizza
приказывает Python от-
крыть файл
pizza .py
и скопировать все функции из него в программу. Вы не види-
те, как происходит копирование, потому что Python копирует код незаметно для
пользователя во время выполнения программы. Вам необходимо знать одно: любая
функция, определенная в
pizza .py
, будет доступна в
making_pizzas .py
.
Чтобы вызвать функцию из импортированного модуля, укажите имя модуля
(
pizza
), точку и имя функции (
make_pizza()
), как показано в строке . Код вы-
дает тот же результат, что и исходная программа, в которой модуль не импорти-
ровался:
Making a 16-inch pizza with the following toppings:
- pepperoni
Making a 12-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese
156 Глава 8 • Функции
Первый способ импортирования, при котором записывается команда
import
с име-
нем модуля, открывает доступ программе ко всем функциям из модуля:
Достарыңызбен бөлісу: |