Я очень смутился. У меня есть набор функций python, все из которых я объединил в файл, называемый (скажем) useful.py
. Затем я могу прочитать модуль в моей IPython сМодули Python: функции, вызывающие друг друга
import useful as uf
, а затем я могу получить доступ к отдельным функциям с
uf.meaning_of_life()
и так далее. Стандартный материал.
Однако некоторые функции в этом файле вызывают другие функции. Я могу вызывать одну функцию в любое время с uf.
, но как насчет функций, которые называют друг друга? Если функция, называемая eat
, ссылается на другую функцию, называемую chew
, как eat
знает, где найти chew
? Я могу назвать оба: uf.eat
и uf.chew
.
Я могу игнорировать все это, просто делая execfile('useful.py')
, который работает отлично, но я хотел бы получить больше ручки в модульной системе.
В настоящее время, когда я использую import
, моя попытка использовать мои функции вызывает ошибки; когда я использую execfile
все работает отлично.
Я ценю, что это может быть истолковано как очень важный вопрос для новичков, но я прихожу на Python с фона Matlab, и мой естественный наклон заключается в использовании execfile
. Указатели на информацию были бы очень желанными.
'eat' и' chew' функции в одном модуле могут ссылаться друг на друга своими неквалифицированными именами 'eat' и' chew'. –
Если вы действительно должны импортировать все в «useful.py» в пространство имен вашего текущего модуля python, «из полезного импорта» будет импортировать все, кроме имен с префиксом «_». Затем они могут быть доступны из текущего модуля как 'chew', а не' uf.chew'. Эта практика, как правило, неодобрилась, потому что вы вдруг не знаете, какие имена уже определены. – zehnpaard
Кстати, какая ошибка? И что случилось с использованием 'uf.chew'? – zehnpaard