Тест Python. Вбудовані функції.
Програма PYTHON. Сьогодні розглянемо вбудовані модулі. Вбудовані в мову програмування функції доступні одночасно. Щоб їх викликати, не треба виконувати жодних додаткових дій. Однак за час існування будь-якої популярної мови на ній було написано стільки функцій і класів, які виявилися потрібні безліччю програмістів і в різних галузях, що включити весь цей обсяг коду в саму мову, якщо можливо, то недоцільно.
Щоб розв’язати проблему доступу до додаткових можливостей мови, у програмуванні стало загальноприйнятою практикою використовувати звані модулі, пакети й бібліотеки. Кожен модуль містить колекцію функцій та класів, призначених для вирішення завдань із певної області. Так в модулі math мови Python містяться математичні функції, модуль random дозволяє генерувати псевдовипадкові числа, в модулі datetime містяться класи для роботи з датами та часом, модуль sys надає доступ до системних змінних і т.д. Програма PYTHON на курсах програмування для дітей цікава та насичена, тож дитина буде мотивована до навчання.
Важливо: Модуль – файл, що містить визначення та інші інструкції мови 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, то виникла б помилка 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.
Другий спосіб імпорту – це коли імпортується не сам модуль, лише необхідні функції з нього.
>>> від import import gcd, sqrt, hypot
Перекласти можна як “з модуля math імпортувати функції gcd, sqrt і 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’
і
>> з календаря import weekheader as week
>>> week(3)
‘Mon Tue Wed Thu Fri Sat Sun’
Тест Python. Вбудовані функції.
В інших випадках краще залишати ідентифікатори вмісту модуля в просторі імен самого модуля та отримувати доступ до них через ім’я модуля, тобто виконувати імпорт командою import ім’я_модуля, а викликати, наприклад, функції через ім’я_модуля.ім’я_функції().
Перевірити свої знання на цю тему ви можете пройшовши тест. Сертифікат про проходження якого обмінюйте на коїни в адміністратора. Якщо ви бажаєте навчитися створювати власні програми мовою пітон – запрошуємо на курси. Програма на PYTHON на курсах програмування – це практичні завдання, які допоможуть навчитися кодингу за короткий термін.