Тест 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’

В інших випадках краще залишати ідентифікатори вмісту модуля в просторі імен самого модуля та отримувати доступ до них через ім’я модуля, тобто виконувати імпорт командою import ім’я_модуля, а викликати, наприклад, функції через ім’я_модуля.ім’я_функції().
Перевірити свої знання на цю тему ви можете пройшовши тест. Сертифікат про проходження якого обмінюйте на коїни в адміністратора. Якщо ви бажаєте навчитися створювати власні програми мовою пітон – запрошуємо на курси. Програма на PYTHON на курсах програмування – це практичні завдання, які допоможуть навчитися кодингу за короткий термін.