Модули - Урок за Python 2
За да подкрепи такива решения, Python има начин да постави дефиниции във файл и да ги използва в режим на скрипт или интерактивен интерпретатор. Такъв файл се нарича модул (модул); дефинициите от модул могат да бъдат импортирани в други модули или в основния модул (колекция от променливи, до които имате достъп в скрипт, който се изпълнява на най-високо ниво и в режим на калкулатор).
Сега влезте в интерпретатора на Python и импортирайте този модул със следната команда:
Това действие не превежда имената на конкретни функции в текущата таблица със символи; тук се въвежда само името на модула fibo. Използвайки името на модула, можете да получите достъп до функциите:
Ако ще използвате функцията често, можете да й дадете локално име:
В допълнение към дефинициите на функции, модулът може да съдържа изпълними изрази. Целта на тези изрази е да инициализират модула, те се изпълняват първия път, когато модулът е импортиран някъде.
Модулите могат да импортират други модули. Не е необходимо да включвате всички импорти в началото на модул (или скрипт, за същата цел), но това обикновено се прави. Имената от импортирания модул се добавят към глобална таблица със символи модулът, който го импортира.
Има вариант на оператора за импортиране, който прехвърля имена от модул директно в символната таблица на импортиращия модул. Например:
В този случай името на самия модул, от който се прехвърлят имената на елементите, не се добавя таблица с местни символи (така че в този пример името fibo е неопределено)
И дори има начин да импортирате всички имена, които даден модул дефинира:
Всички имена се импортират, с изключение на тези, които започват с долно (_).
Изпълнение на модули като скриптове
Когато стартирате модул Python като
тогава кодът в този модул ще бъде изпълнен, когато бъде импортиран, но стойността __name__ ще бъде зададена на "__main__". Това означава, че чрез добавяне на този код в края на скрипта:
можете да направите възможно стартирането на файла както като скрипт, така и като импортиран модул, тъй като кодът, който анализира командния ред, се изпълнява само когато модулът се изпълнява като основен (основен) файл:
Ако модулът е импортиран, кодът ще се провали:
Тази техника често се използва за осигуряване на удобен за потребителя интерфейс към модул или за тестване (изпълнението на модул, тъй като скриптът изпълнява набор от тестове).
Път за търсене на модул
Ако се импортира модул с име спам, интерпретаторът търси файл с име spam.py в текущата директория, а след това в директориите, посочени в променливата на средата PYTHONPATH. Той има същия синтаксис като променливата на черупката PATH, което от своя страна е изброяване на директории. Когато променливата PYTHONPATH не е зададена или файлът не е намерен на местата, описани в нея, търсенето продължава по пътя по подразбиране, в зависимост от посочения по време на инсталацията; в Unix това обикновено е .:/usr/local/lib/python.
Всъщност търсенето на модули се извършва в списъка с директории, предаден в променливата sys.path, който се инициира от: директорията, съдържаща скрипта в записа (или текущата директория), PYTHONPATH и по подразбиране за указаната директория по време на инсталацията. Това позволява на програмите на Python (които знаят какво правят) да модифицират или отменят пътя на търсене на модула. Забележка - тъй като директорията, съдържаща скрипта, който изпълнявате, също е в пътя за търсене - важно е името на скрипта да не съвпада с името на стандартния модул, в противен случай - когато този модул е импортиран - Python ще се опита да зареди скрипта като модул, в повечето случаи това ще бъде грешка. За повече подробности вижте раздела Стандартни модули .
"Компилирани" файлове на Python
Важен начин за ускоряване на стартирането на кратка програма, използваща много стандартни модули, може да бъде следното условие: ако файл spam.pyc се намери и в директорията, където се намира файлът spam.py, последният се приема закомпилиран байт"(" Byte-compiled ") версия на спам модула. Файлът spam.pyc записва времето за модификация на версията spam.py, използвана за създаване на spam.pyc, и ако версиите не съвпадат, .pyc файлът се игнорира.
Обикновено не е нужно да правите нищо, за да създадете файла spam.pyc. Всеки път, когато spam.py се компилира успешно, се прави опит да се напише компилираната версия в spam.pyc. Не се счита за грешка, ако опитът е неуспешен; ако по някаква причина файлът не е написан изцяло, полученият файл spam.pyc ще се счита за невалиден и поради тази причина в бъдеще ще бъде игнориран. Съдържанието на файла spam.pyc е независимо от платформата, така че директорията на модула Python може да се използва паралелно от машини с различни архитектури.
Няколко съвета за експерти:
Стандартни модули
Python се доставя с библиотека от стандартни модули, която е описана в отделен документ, Справочникът за библиотеката на Python (по-нататък „Справочник за библиотеката“). Някои модули са вградени в интерпретатора; те осигуряват достъп до операции, които не са в основата на езика, но въпреки това те са вградени за ефективност и за осигуряване на достъп до примитиви на операционната система като системни разговори (системни обаждания). Комплектът от такива модули е избор на настройка, който също зависи от използваната платформа. Например модулът winreg се предоставя само на системи, на които е инсталиран Windows. Един конкретен модул заслужава повече внимание: модулът sys, който е вграден във всяка версия на интерпретатора на Python. Променливите sys.ps1 и sys.ps2 определят низовете, които да се използват като първични и вторични подкани:
Тези две променливи се дефинират само ако интерпретаторът е в интерактивен режим.