Книга «Изучаем Python»



Pdf көрінісі
бет97/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   93   94   95   96   97   98   99   100   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

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
с име-
нем модуля, открывает доступ программе ко всем функциям из модуля:
имя_модуля
.
имя_функции
()
Импортирование конкретных функций
Также возможно импортировать конкретную функцию из модуля. Общий синтак-
сис выглядит так:
from 
имя_модуля
import 
имя_функции
Вы можете импортировать любое количество функций из модуля, разделив их 
имена запятыми:
from 
имя_модуля
import 
функция
_0, 
функция
_1, 
функция
_2
Если ограничиться импортированием только той функции, которую вы намерева-
етесь использовать, пример 
making_pizzas .py
будет выглядеть так:
from pizza import make_pizza
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
При таком синтаксисе использовать точечную запись при вызове функции не обя-
зательно. Так как функция 
make_pizza()
явно импортируется в команде 
import
, при 
использовании ее можно вызывать прямо по имени.
Назначение псевдонима для функции
Если имя импортируемой функции может конфликтовать с именем существующей 
функции или функция имеет слишком длинное имя, его можно заменить коротким 
уникальным 
псевдонимом
(alias) — альтернативным именем для функции. Псевдо-
ним назначается функции при импортировании.
В следующем примере функции 
make_pizza()
назначается псевдоним 
mp()
, для чего 
при импортировании используется конструкция 
make_pizza as mp
. Ключевое слово 
as
переименовывает функцию, используя указанный псевдоним:
from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushrooms', 'green peppers', 'extra cheese')
Команда 
import
в этом примере назначает функции 
make_pizza()
псевдоним 
mp()
для этой программы. Каждый раз, когда потребуется вызвать 
make_pizza()
, доста-
точно включить вызов 
mp()
— Python выполнит код 
make_pizza()
без конфликтов 
с другой функцией 
make_pizza()
, которую вы могли включить в этот файл про-
граммы.
Общий синтаксис назначения псевдонима выглядит так:
from 
имя_модуля
import 
имя_функции
as 
псевдоним


Хранение функций в модулях
157
Назначение псевдонима для модуля
Псевдоним также можно назначить для всего модуля. Назначение короткого 
имени для модуля — скажем, 
p
для 
pizza
— позволит вам быстрее вызывать функ-
ции модуля. Вызов 
p.make_pizza()
получается более компактным, чем 
pizza.
make_pizza()
:
import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
Модулю 
pizza
в команде 
import
назначается псевдоним 
p
, но все функции 
модуля сохраняют свои исходные имена. Вызов функций в записи 
p.make_
pizza()
не только компактнее 
pizza.make_pizza()
; он также отвлекает внима-
ние от имени модуля и помогает сосредоточиться на содержательных именах 
функций. Эти имена функций, четко показывающие, что делает каждая функ-
ция, важнее для удобочитаемости вашего кода, чем использование полного 
имени модуля.
Общий синтаксис выглядит так:
import 
имя_модуля
as 
псевдоним
Импортирование всех функций модуля
Также можно приказать Python импортировать каждую функцию в модуле; 
для этого используется оператор 
*
:
from pizza import *
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
Звездочка в команде 
import
приказывает Python скопировать каждую функцию 
из модуля 
pizza
в файл программы. После импортирования всех функций вы 
сможете вызывать каждую функцию по имени без точечной записи. Тем не менее 
лучше не использовать этот способ с большими модулями, написанными дру-
гими разработчиками; если модуль содержит функцию, имя которой совпадает 
с существующим именем из вашего проекта, возможны неожиданные результа-
ты. Python обнаруживает несколько функций или переменных с одинаковыми 
именами, и вместо импортирования всех функций по отдельности происходит 
замена этих функций.
В таких ситуациях лучше всего импортировать только нужную функцию или функ-
ции или же импортировать весь модуль с последующим применением точечной 
записи. При этом создается чистый код, легко читаемый и понятный. Я включил 
этот раздел только для того, чтобы вы понимали команды 
import
вроде следующей, 
когда вы встретите их в чужом коде:
from 
имя_модуля
import *


158

Достарыңызбен бөлісу:
1   ...   93   94   95   96   97   98   99   100   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет