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



Pdf көрінісі
бет89/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   85   86   87   88   89   90   91   92   ...   238
Байланысты:
2 5343781172763690906

имя_модуля.имя_функции()

Импортирование конкретных функций

Также возможно импортировать конкретную функцию из модуля. Общий синтак-

сис выглядит так:

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    Глава 8  •  Функции

Стилевое оформление функций

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

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

стра и символов подчеркивания. Содержательные имена помогают вам и другим 

разработчикам понять, что же делает ваш код. Эти соглашения следует соблюдать 

и в именах модулей.

Каждая функция должна быть снабжена комментарием, который кратко поясняет, 

что же делает эта функция. Комментарий должен следовать сразу же за определе-

нием функции в формате строк документации. Если функция хорошо документи-

рована, другие разработчики смогут использовать ее, прочитав только описание. 

Конечно, для этого они должны доверять тому, что код работает в соответствии 

с описанием, — но, если знать имя функции, какие аргументы ей нужны и какое 

значение она возвращает, они смогут использовать ее в своих программах.

Если для параметра задается значение по умолчанию, слева и справа от знака ра-

венства не должно быть пробелов:

def имя_функции(параметр_0, параметр_1='значение_по_умолчанию')

Те же соглашения должны применяться для именованных аргументов в вызовах 

функций:

имя_функции(значение_0, параметр_1='значение')

Документ PEP 8 (https://www.python.org/dev/peps/pep-0008/) рекомендует ограни-

чить длину строк кода 79 символами, чтобы строки были полностью видны в окне 

редактора нормального размера. Если из-за параметров длина определения функ-

ции превышает 79 символов, нажмите Enter после открывающей круглой скобки 

в строке определения. В следующей строке дважды нажмите Tab, чтобы отделить 

список аргументов от тела функции, которое должно быть снабжено отступом 

только на один уровень.

Многие редакторы автоматически выравнивают дополнительные строки параме-

тров по отступам, установленным в первой строке:

def имя_функции(

        параметр_0, параметр_1, параметр_2,

        параметр_3, параметр_4, параметр_5):

    тело функции...

Если программа или модуль состоит из нескольких функций, эти функции можно 

разделить двумя пустыми строками. Так вам будет проще увидеть, где кончается 

одна функция и начинается другая.

Все команды 

import

 следует записывать в начале файла. У этого правила есть 



только одно исключение: файл может начинаться с комментариев, описывающих 

программу в целом.





Достарыңызбен бөлісу:
1   ...   85   86   87   88   89   90   91   92   ...   238




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

    Басты бет