Наилучшая практика написания собственных функций с импортированными модулями в Python? - PullRequest
0 голосов
/ 04 апреля 2020

Я относительно новичок в Python кодировании и пытаюсь написать свои собственные функции / методы в модуле tools.py для текущего проекта.

Мне нужно импортировать некоторые модули, такие как numpy для эти методы, но я не уверен, лучший способ сделать это. Должен ли я импортировать в каждый метод каждый раз, когда вызываю эту функцию? Или в скрипте tools.py в начале? Мне не всегда нужны все функции в tools.py, и, например, не всегда требуется numpy в сценарии, где я вызываю import tools. Я хотел бы, чтобы мой код был максимально эффективным.

Я нашел информацию, которую мне не нужно импортировать numpy, если я не вызываю ее напрямую в конкретном c сценарии.

Спасибо!

Ответы [ 3 ]

1 голос
/ 04 апреля 2020

Я могу ошибаться, но я уверен, что импорт модуля загружает все, используете ли вы import sys или from sys import argv. Таким образом, импорт numpy в модуль tools сделает весь модуль numpy доступным для модуля инструментов и, хотя он не вызывается напрямую, куда бы он ни был импортирован. Я видел только импорт внутри функции для достижения дополнительной поддержки библиотеки. Я не слышал, чтобы это делалось ради эффективности и производительности.

Эти ссылки могут помочь в дальнейшем:

Должны ли операторы import всегда находиться в верхней части модуля? https://softwareengineering.stackexchange.com/q/187403

0 голосов
/ 04 апреля 2020

Вы всегда можете импортировать только определенные c функции или классы модуля, то есть:

from tools import myfunction

Кроме того, верно, что вы не импортируете numpy, если вам это не нужно. Однако, насколько мне известно, импорт импорта не доступен в текущем скрипте.

Это означает, что когда tools.py содержит импорт numpy, и вы загружаете свои инструменты в другом скрипте main.py , numpy (т.е. numpy.array()) не будет доступен в main.py . Вам также необходимо импортировать его туда.

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

Некоторые общие советы по производительности также при условии здесь

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

0 голосов
/ 04 апреля 2020

Вы не должны импортировать numpy при каждом вызове метода. Это должно быть сделано только один раз в начале вашего скрипта. Если вы не хотите импортировать весь модуль в tools.py, просто импортируйте нужные вам подмодули c из библиотеки:

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