Библиотеки (модули)

Содержание

Слайд 2

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных import random as r #

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

import random as r
# создаем список чисел:

от 0 до 9
nums = list(range(10))
print('Наш список:', ', '.join(map(str, nums)) + '.')
r.shuffle(nums) # "перемешиваем" значения
print('Случайный выбор:', str(r.choice(nums)) + '.')

Подключая модуль random привычным способом, мож­но записать так:

Вспомним модуль datetime и рассчита­ем время пребывания в командировке:

import datetime as dt
# дата и время отъезда
leave_time = dt.datetime(2020, 8, 10, 9, 0, 0)
# дата и время приезда
arrival_time= dt.datetime(2020, 8, 12, 17, 00, 0)
print('Уехал:', leave_time)
print('Приехал:', arrival_time)
# затраченное время
elapsed_time = arrival_time - leave_time
print('Провёл в командировке:', elapsed_time)

Слайд 3

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных import datetime as dt import

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

import datetime as dt
import locale # подключение

для локализации
# задаем местоположение - RU
locale.setlocale(locale.LC_ALL, "ru")
# дата и время отъезда
leave_time = dt.datetime(2020, 8, 10, 9, 0, 0)
# дата и время приезда
arrival_time= dt.datetime(2020, 8, 12, 17, 00, 0)
print('Уехал:', leave_time.strftime('%a, %d %b.,\ %Y г., в %H:%M'))
print('Вернулся:', arrival_time.strftime('%a, %d \ %b., %Y г., в %H:%M'))
# затраченное время
elapsed_time = arrival_time - leave_time
print('Провёл в командировке:', elapsed_time.days, 'дн. и', elapsed_time.seconds // 3600, 'ч.',)

Полученный результат представлен в меж­ду­народном формате.
Для того, чтобы использовать привыч­ные для нас названия дней и формат дат, за­да­дим местоположение с помощью библи­о­те­ки locale:

Слайд 4

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных # создаем библиотеку (модуль mylib.py)

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

# создаем библиотеку (модуль mylib.py)
def greeting(name):
if

isinstance(name, str):
return 'Привет, ' + name + '.'
else:
return 'Привет, ' + str(name) + '.'

В языке Python есть возможность создавать и подключать собственные модули. Для это­го достаточно сохранить в отдельный файл набор полезных функций. Например, пусть это будет файл, с именем mylib.py

Этот файл (mylib.py) нужно поместить в тот же каталог папку, где будет помещен файл с кодом для его вызова.
Вызов будет выглядеть так (файл libtest.py):

# libtest.py вызывает функцию модуля mylib.py
import mylib as ml
print(ml.greeting('Алексей')) #вызов функции

Разумеется файл (mylib.py) может хра­нить намного больше полезных функций.

Слайд 5

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных Модуль mylib был подключен без

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

Модуль mylib был подключен без особого труда,

так как находился в том же каталоге (папке), что и исполняемый скрипт.
Существует возможность подключать модули с расположением в других папках на диске персонального компьютера (ПК). Если подключаемый модуль не был найден в папке, из которой запускается исполня­е­мый скрипт (в нашем случае – libtest.py), то интерпретатор будет искать также в кон­сольной переменной PYTHONPATH. Чтобы узнать, где именно будет осуществлён поиск на конкретном ПК, необходимо запустить следующий скрипт:

import sys # подключаем библиотеку
# для работы с системой
sys.path #список всей путей для библиотек

В ответ будет выведен список всех путей, прописанных в указанной выше переменной PYTHONPATH. Среди них первый, как можно заметить, как раз и есть папка, откуда запус­кается скрипт.

Слайд 6

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных Если необходимо уточнить, какие стандартные

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

Если необходимо уточнить, какие стандартные библиотеки возможны

для использования (подключения) необходимо однострочный скрипт:

help('modules')

В ответ получим сообщение:
Please wait a moment while I gather
a list of all available modules...
и через несколько секунд будет выведен список для импорта (import) и работы с библиотекой (библиотеками).
Для того, чтобы уточнить все имена функций (и не только) в подключаемом модуле, используется функция dir().

# список имен функций до подключения mylib.py
print(dir()) # выводим их
import mylib as ml
print(dir()) # теперь выводим с учётом mylib.py
# print(dir(ml)) # или так
print(ml.greeting('Алексей')) #вызов функции

Задача: узнать перечень методов turtle.

Слайд 7

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных Разбивая программу на разные файлы,

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

Разбивая программу на разные файлы, логические разделяя

на блоки, упрощает её дальнейшее редактирование и поддержку.
Планировать указанное выше разделение рекомендуется ещё до начала написания про­граммы, определив как, где и за что будет отвечать отдельно взятый блок (модуль).
Поскольку каждый отдельный модуль – это файл, с расширением «.py», важно опреде­лить какой из них будет подключаемым, а какой исполняемым, т.е. тем самым, ос­нов­ным («main»), который и будет запус­каться. Перепишем модуль mylib.py:

# функция для приветствия по имени
def greeting(name):
return f'Привет, {name}.'
if __name__ == '__main__':
print(f'Это исполняемый, главный\ {__name__} модуль.')
else:
print(f'Это подключаемый {__name__} модуль.')

Слайд 8

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных Теперь если вызвать его как

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

Теперь если вызвать его как подклю­ча­е­мый модуль

(с помощью import):

# libtest.py вызывает функцию модуля mylib.py
import mylib as ml
print(ml.greeting('Алексей')) #вызов функции

то можно увидеть следующий результат:

Теперь стали понятными, как минимум, три важных момента:
1. Подключаемый модуль выполняется полностью. При необходимости использовать только часть его функций, необходимо вы­зы­вать их директивой from.
2. Все, что находится вне функций (т.е. глобально), выполнится в любом случае.
3. В исполняемом (запускаемом) модуле глобальная переменная __name__ получает значение __main__. 

Слайд 9

БИБЛИОТЕКИ (МОДУЛИ) подключение готовых, создание собственных Не все библиотеки устанавливаются вместе

БИБЛИОТЕКИ (МОДУЛИ)

подключение готовых, создание собственных

Не все библиотеки устанавливаются вместе с интерпретатором.

Некоторые приходится ус­та­навливать дополнительно. Для этого поль­зуются менеджером пакетов PIP.
Начиная с Python версии 3.4, pip постав­ля­ет­ся вместе с интерпретатором. Запускается из командной строки системы Windows, вызо­вом Win+R и далее командой cmd. Синтакис:
pip install pygame
В примере выше устанавливается биб­ли­­о­тека pygame (устанавливать данную биб­лиотеку пока не обя­зательно).

if __name__ == '__main__':
# команды, вызовы функций основного модуля
# в т.ч. из подключаемых модулей

Следовательно, при программе, состоящей из основного (исполняемого) и подключаемых модулей, конструкция:

позволяет как назначить основной модуль, так и предотвратить некорректные результаты при попытке запуска модуля, предназначен­ного только для подключения.

Слайд 10

ИТОГ УРОКА Mодули в Python – это отдельные файлы с расширением

ИТОГ УРОКА

Mодули в Python – это отдельные файлы с расширением .py.

Имя модуля для ис­поль­зования и есть имя файла (без рас­ши­ре­ния).
Модуль Python может иметь набор опре­де­ленных функций, структур данных или переменных.
Модули импортируются с помощью ко­ман­ды import, а также вспомогательных ди­ректив: as и from.
Импортируемый модуль выполняется полностью.
Для определения исполняемого модуля используется глобальная переменная __name__, которая (для основного модуля) принимает значение __main__. В противном случае её значение – имя модуля.
Благодаря модулям (библиотекам) Python является расширяемым языком. Множество полезных библиотек можно установить с помощью менеджера пакетов PIP.

подключение готовых, создание собственных

БИБЛИОТЕКИ (МОДУЛИ)

Слайд 11

ДОМАШНЕЕ ЗАДАНИЕ Даны два модуля: 1. f_lib.py – библиотека с функцией

ДОМАШНЕЕ ЗАДАНИЕ

Даны два модуля:
1. f_lib.py – библиотека с функцией multiply:

подключение готовых,

создание собственных

БИБЛИОТЕКИ (МОДУЛИ)

#f_lib.py - функция использует аннотацию:
# l: list - значит, что аргумент - это список
# -> - значит, что функция вернет тип int
def multiply(l: list) -> int:
length = len(l) # длина списка
n = 1 # объявляем переменную
for i in range(length):
n *= l[i] # перемножает все элементы списка
return n
# написать здесь условие, которое при запуске
# выведет: "Это не основной модуль!"

2. main_module.py – подключаемый модуль, для вызова функции multiply:

#main_module.py
int_list = [1, 2, 3, 4] # список из 4 элементов
# типа int
# написать здесь условие, которое при запуске
# вызовет библиотеку (модуль) f_lib.py и с помощью
# функции multiply перемножит все элементы int_list.