Тест Python. Встроенные модули.

Прокрутить вниз

Программа на PYTHON. Сегодня рассмотрим всторенные модули. Встроенные в язык программирования функции доступны сразу. Чтобы их вызвать, не надо выполнять никаких дополнительных действий. Однако за время существования любого популярного языка на нем было написано столько функций и классов, которые оказались востребованными множеством программистов и в разных областях, что включить весь этот объем кода в сам язык если возможно, то нецелесообразно.

Чтобы разрешить проблему доступа к дополнительным возможностям языка, в программировании стало общепринятой практикой использовать так называемые модули, пакеты и библиотеки. Каждый модуль содержит коллекцию функций и классов, предназначенных для решения задач из определенной области. Так в модуле math языка Python содержатся математические функции, модуль random позволяет генерировать псевдослучайные числа, в модуле datetime содержатся классы для работы с датами и временем, модуль sys предоставляет доступ к системным переменным и т. д.

Важно запомнить: Модуль – файл, содержащий определения и другие инструкции языка Python. Имя файла образуется путем добавления к имени модуля суффикса(расширения). В пределах модуля его имя доступно глобальной переменной __name__.

Как написать свой модуль 

 Модуль оформляется в виде отдельного файла с исходным кодом.  

#!/usr/bin/python 

 # создали файл fibo.py 

 def fib(n): a, b = 0, 1  

while b < n: 

 print b, 

 a, b = b, a+b  

>>> import fibo  

>> fibo.fib(500) # 1 1 2 3 5 8 13 21 34 55 89 144 233 377  

Программа на PYTHON  

В программе на Python модуль представлен объектом модулем, атрибутами которого являются имена, определенные в модуле: 

 #!/usr/bin/python  

import datetime  

d1 = datetime.date(2010, 03, 31)  

В этом примере импортируется модуль datetime. В результате работы оператора import в текущем пространстве имен появляется объект с именем datetime.  

Количество модулей для языка Python огромно, это одна из причин популярности языка. Часть модулей собрана в так называемую стандартную библиотеку. Стандартная она потому, что поставляется вместе с установочным пакетом. Однако существуют сторонние библиотеки. Они скачиваются и устанавливаются отдельно.

Для доступа к функционалу модуля, его надо импортировать в программу. После импорта интерпретатор «знает» о существовании дополнительных классов и функций и позволяет ими пользоваться.

В Питоне импорт осуществляется командой import. При этом существует несколько способов импорта. Рассмотрим работу с модулем на примере math. Итак,

>>> import math

Ничего не произошло. Однако в глобальной области видимости появилось имя math. Если до импорта вы упомянули бы имя math, то возникла бы ошибка NameError. Теперь же

>>> math
<module 'math' (built-in)>

В программе завелся объект math, относящийся к классу module.

Чтобы увидеть перечень функций, входящих в этот модуль, воспользуемся встроенной в Python функцией dir(), передав ей в качестве аргумента имя модуля:

>>> dir(math)
['__doc__', '__loader__', '__name__', 
'__package__', '__spec__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 
'ceil', 'copysign', 'cos', 'cosh',
'degrees', 'e', 'erf', 'erfc', 'exp', 
'expm1', 'fabs', 'factorial', 'floor',
'fmod', 'frexp', 'fsum', 'gamma', 'gcd',
 'hypot', 'inf', 'isclose', 'isfinite',
'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 
'log10', 'log1p', 'log2', 'modf',
'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh', 'trunc']

Проигнорируем имена с двойными подчеркиваниями. Все остальное – имена функций и констант (переменных, которые не меняют своих значений), включенных в модуль math. Чтобы вызвать функцию из модуля, надо впереди написать имя модуля, поставить точку, далее указать имя функции, после чего в скобках передать аргументы, если они требуются. Например, чтобы вызвать функцию pow из math, надо написать так:

>>> math.pow(2, 2)
4.0

Обратите внимание, эта другая функция pow(), не та, что встроена в сам язык. «Обычная» функция pow() возвращает целое, если аргументы целые числа:

>>> pow(2, 2) 4

Для обращения к константе скобки не нужны:

>>> math.pi
3.141592653589793

Если мы не знаем, что делает та или иная функция, то можем получить справочную информацию о ней с помощью встроенной в язык Python функции help():

>>> help(math.gcd)
Help on built-in function gcd in module math:

gcd(...)
    gcd(x, y) -> int
    greatest common divisor of x and y

Для выхода из интерактивной справки надо нажать клавишу q. В данном случае сообщается, что функция возвращает целое число, и это наибольший общий делитель для чисел x и y. Описание модулей и их содержания также можно посмотреть в официальной документации на сайте python.org.

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

>>> from math import gcd, sqrt, hypot

Перевести можно как «из модуля math импортировать функции gcdsqrt и hypot«.

В таком случае при их вызове не надо перед именем функции указывать имя модуля:

>>> gcd(100, 150)
50
>>> sqrt(16)
4.0
>>> hypot(3, 4)
5.0

Чтобы импортировать сразу все функции из модуля:

>>> from math import *

Импорт через from не лишен недостатка. В программе уже может быть идентификатор с таким же именем, как имя одной из импортируемых функций или констант. Ошибки не будет, но одно из них окажется «затерто»:

>>> pi = 3.14
>>> from math import pi
>>> pi
3.141592653589793

Здесь исчезает значение 3.14, присвоенное переменной pi. Это имя теперь указывает на число из модуля math. Если импорт сделать раньше, чем присвоение значения pi, то будет все наоборот:

>>> from math import pi
>>> pi = 3.14
>>> pi
3.14

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

Однако можно изменить имя идентификатора из модуля на какое угодно:

>>> from math import pi as P
>>> P
3.141592653589793
>>> pi
3.14

В данном случае константа pi из модуля импортируется под именем P. Смысл подобных импортов в сокращении имен, так как есть модули с длинными именами, а имена функций и классов в них еще длиннее. Если в программу импортируется всего пара сущностей, и они используются в ней часто, то имеет смысл переименовать их на более короткий вариант. Сравните:

>>> import calendar
>>> calendar.weekheader(2)
'Mo Tu We Th Fr Sa Su'

и

>>> from calendar import weekheader as week
>>> week(3)
'Mon Tue Wed Thu Fri Sat Sun'

Во всех остальных случаях лучше оставлять идентификаторы содержимого модуля в пространстве имен самого модуля и получать доступ к ним через имя модуля, то есть выполнять импорт командой import имя_модуля, а вызывать, например, функции через имя_модуля.имя_функции().
Проверить свои знания по этой темы вы можете пройдя тест. Сертификат о прохождении которого обменивайте  на коины у администратора. Если вы хотите научиться создавать собственные программы на языке питон приглашаем на курсы. Программа на PYTHON на курсах программирования это практические задания, что помогут обучиться кодингу за короткий срок.