Разделы инструкций

В сети

Пользователей: 52
Из них просматривают:
Аналоги: 24. Даташиты: 7. Инструкции: 5. Новости: 5. Остальное: 2. Ошибки: 1. Программы: 1. Расчёты: 1. Форум: 5. Чат: 1.
Участников: 3
Гостей: 49

Google , wolf170571 , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

6.1. Создание и использование модулей

Модуль — файл, содержащий определения и другие инструкции языка Python. Имя файла образуется путем добавления к имени модуля суффикса (расширения) '.py'. В пределах модуля, его имя доступно в глобальной переменной __name__. Например, используя Ваш любимый текстовый редактор, создайте в текущем каталоге файл с именем 'fibo.py' следующего содержания1:

 

'''\
Genegaciia i vivod chisel Fibonachi
'''

def fib(n):
    '''Vivodit posledovatelnost chisel Fibonachi, ne previshayshix n'''
    a, b = 0, 1
    while b < n:
        print b,
        a, b = b, a + b

def fib2(n):
    '''Vozvrashaet spisok, sodergashiy chisla riada Fibonachi, ne previshayshix n'''
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a + b
    return result

 

Теперь запустите интерпретатор и импортируйте только что созданный модуль:

 

>>> import fibo

 

Эта инструкция не вводит имена функций, определенных в fibo прямо в текущее пространство имён, она только вводит имя модуля fibo. Используя имя модуля, Вы можете получить доступ к функциям:

 

>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

 

Если Вы собираетесь использовать функцию часто, можете присвоить ее локальной переменной:

 

>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

Модуль может содержать любые инструкции, предназначенные для его инициализации, а не только определения функций. Они выполняются, только когда модуль импортируется первый раз.

Каждый модуль имеет собственное пространство имен, являющееся глобальной областью видимости для всех определенных в нём функций. Таким образом, автор модуля может использовать глобальные переменные, не беспокоясь о возможных конфликтах с глобальными переменными пользователя. С другой стороны, если Вы знаете, что делаете, Вы можете получить доступ к глобальным переменным модуля точно так же, как и к его функциям (на самом деле, функции тоже являются переменными), modname.itemname.

Модули могут импортировать другие модули. Обычно инструкцию import располагают в начале модуля или программы. Имена импортируемых модулей помещаются в текущее пространство имен импортирующего модуля или программы.

Другой вариант инструкции import импортирует имена из модуля непосредственно в текущее пространство имен:

 

>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

В этом случае имя модуля не будет представлено в текущей области видимости (в приведённом примере, имя fibo не определено).

Еще один вариант инструкции import позволяет импортировать все имена, определённые в модуле, кроме имён, начинающихся с символа подчеркивания ('_'):

 

>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

Часто возникает необходимость импортировать модуль или объект модуля, используя для него локальное имя, отличное от исходного. Например, следующий код позволяет заменить имя string на _string (которое не будет импортироваться инструкцией 'from my_module import *') при написании модуля:

 

import string
_string = string
del string

 

Ещё один пример показывает, как можно избежать конфликта имёни, определенного в модуле, со встроенным именем:

 

import anydbm
dbopen = anydbm.open

 

Начиная с версии 2.0, подобные операции можно произвести гораздо проще (и безопаснее) благодаря расширению синтаксиса инструкции import:

 

import string as _string

from anydbm import open as dbopen

 

Следует заметить, что as не является зарезервированным словом, и Вы можете по-прежнему определять переменные с таким именем.

Если имя модуля, который необходимо импортировать, становится известным только во время выполнения программы, Вы можете воспользоваться инструкцией exec ("exec 'import ' + module_name") или встроенной функцией __import__() (см. раздел 12).

 

Скачать файл fibo.py

Примечания:
  • Исходный код файла прикреплён в конце раздела.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

При замене электролитических конденсаторов, кроме соблюдения полярности, не следует значительно превышать допустимое рабочее напряжение.

Интересно

Контактные щетки для микродеталей, электробритв и т.п. можно выпилить из графитовых стержней от старых батареек питания.

Похожие инструкции