Главная страница

Язык Python. Уроки Python. Python Lessons Oleg Kishinskii мар. 30


Скачать 406.31 Kb.
НазваниеPython Lessons Oleg Kishinskii мар. 30
АнкорЯзык Python
Дата09.12.2022
Размер406.31 Kb.
Формат файлаdocx
Имя файлаУроки Python.docx
ТипДокументы
#835711
страница9 из 9
1   2   3   4   5   6   7   8   9

Модули




      1. Файлы байткода .pyc


Импорт модуля – относительно дорогостоящее мероприятие, поэтому Python предпри- нимает некото- рые трюки для ускорения этого процесса. Один из способов – создать байт-компилированные файлы (или байткод) с расширением .pyc, которые являются некой промежуточной формой, в которую Python переводит программу (помните раздел “Введение” о том, как работает Python?). Такой файл .pyc по- лезен при импорте модуля в следующий раз в другую программу – это произойдёт намного быстрее, поскольку зна- чительная часть обработки, требуемой при импорте модуля, будет уже проделана. Этот байткод также является платформо-независимым.




Примечание: Обычно файлы .pyc создаются в том же каталоге, где расположены и соот- ветствую- щие им файлы .py. Если Python не может получить доступ для записи файлов в этот каталог, файлы

.pyc созданы не будут.


      1. Оператор from . . . import . . .



from math import *

n = input("Введите диапазон:- ") p = [2, 3] count = 2

a=5

while (count < n): b=0

for i in range(2,a):

if ( i <= sqrt(a)): if (a % i == 0): print("a neprost",a)

b=1 else:

pass if (b != 1):

print("a prost",a) p = p + [a] count = count + 1

a=a+2 print p

Чтобы импортировать переменную argv прямо в программу и не писать всякий раз sys. при обращении к ней, можно воспользоваться выражением “from sys import argv”. Для импорта всех имён, использую- щихся в модуле sys, можно выполнить команду “from sys import *”. Это работает для любых модулей. В общем случае вам следует избегать использования этого оператора и использовать вместо этого оператор import, чтобы предотвратить конфликты имён и не затруднять чтение программы.

      1. Имя модуля –name



if name == 'main':

print('Эта программа запущена сама по себе.') else:

print('Меня импортировали в другой модуль.')

У каждого модуля есть имя, и команды в модуле могут узнать имя их модуля. Это полез- но, ко- гда нужно знать, запущен ли модуль как самостоятельная программа или импорти- рован. Как уже упоминалось выше, когда модуль импортируется впервые, содержащийся в нём код исполняется. Мы можем воспользоваться этим для того, чтобы заставить мо- дуль вести себя по-разному в зависимости от того, используется ли он сам по себе или импортируется в другую программа. Этого можно достичь с применением атрибута мо- дуля под названиемname.

Как это работает: В каждом модуле Python определено его имя –name. Если оно равно

main“, это означает, что модуль запущен самостоятельно пользователем, и мы можем выполнить соответствующие действия.

      1. Создание собственных модулей


Создать собственный модуль очень легко. Да вы всё время делали это! Ведь каждая про- грамма на Python также является и модулем. Необходимо лишь убедиться, что у неё уста- новлено расширение


#mymodule.py
def sayhi():

print('Привет! Это говорит мой модуль.')

version = '0.1'

.py. Следующий пример объяснит это.

Выше приведён простой модуль. Как видно, в нём нет ничего особенного по сравнению с обычной программой на Python. Далее посмотрим, как использовать этот модуль в дру- гих наших программах. Помните, что модуль должен находиться либо в том же каталоге, что и программа, в ко- торую мы импортируем его, либо в одном из каталогов, указанных в sys.path.






Примечание: Обратите внимание, что мы используем всё то же обозначение точкой для до- ступа к элементам модуля. Python повсеместно использует одно и то же обо- значение точкой, придавая ему таким образом характерный «Python-овый» вид и не вынуждая нас изучать всё новые и новые способы делать что-либо.


Вот версия, использующая синтаксис from..import


#mymodule_demo2.py
from mymodule import sayhi,version
(continues on next page)


sayhi()

print('Версия', version)

(продолжение с предыдущей страницы)
Примечание: Обратите внимание, что если в модуле, импортирующем данный модуль, уже было объ- явлено имяversion, возникнет конфликт. Это весьма вероятно, так как объявлять версию любого модуля при помощи этого имени – общепринятая практика. Поэтому всегда рекомендуется отдавать предпочтение оператору import, хотя это и сделает вашу программу немного длиннее.


Вы могли бы также использовать from mymodule import *

Это импортирует все публичные имена, такие как sayhi, но не импортируетversion, потому что оно начинается с двойного подчёркивания
1   2   3   4   5   6   7   8   9


написать администратору сайта