Объем импортируемых модулей / функций в Python - PullRequest
4 голосов
/ 25 января 2011

Я новичок здесь и не уверен на 100%, как задать этот вопрос, поэтому я просто погрузлюсь в него. Должен ли я использовать операторы import в начале каждой написанной мной функции, которая импортирует все различные модулифункции, которые мне нужны для объема этой функции?т.е.

def func1()
    import os.path
    print func(2)
    do something with os.path

def func2()
    import os.path
    do something with os.path

Увеличит ли это нагрузку на память или другие накладные расходы, или оператор import просто отображает локальное имя в уже загруженный объект?Есть ли лучший способ сделать это?(Ссылки на учебники и т. Д. Приветствуются. Я давно искал, но не могу найти хороший ответ на этот вопрос.)

Ответы [ 2 ]

10 голосов
/ 25 января 2011

Обычно весь импорт помещается в начало файла. При импорте модуля в тело функции будет import модуль только в этой области:

def f():
    import sys
    print 'f', sys.version_info

def g():
    print 'g', sys.version_info

if __name__ == '__main__':
    f() # will work
    g() # won't work, since sys hasn't been imported into this modules namespace
6 голосов
/ 25 января 2011

Модуль будет обработан только при первом импорте;последующий импорт будет копировать только ссылку на локальную область.Тем не менее это лучший стиль для импорта в верхней части модуля, когда это возможно;подробнее см. PEP 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...