2015-10-17 9 views
-2

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

Я делаю переход от MATLAB к Python. В MATLAB я могу написать свои собственные функции и использовать их в своем коде. Я знаю, что могу сделать то же самое в Python. Но мне трудно понять, как это сделать.

Что бы я хотел сделать, создайте файл с несколькими определениями функций, а затем импортируйте его в Python, как и любой другой модуль.

Во-первых, это правильный способ думать об этом? Или мне просто нужно создать несколько файлов определений для каждой функции?

Во-вторых, если это правильный способ задуматься о том, как получить доступ к файлу? Я знаю, что вы должны установить PYTHONPATH. Я посмотрел на него, и там, где он выглядит, для меня нет никакого смысла.

Как, например: Я создал папку User. В нем у меня есть функция python, называемая ted.py. Я помещаю указанный файл, где находятся остальные файлы библиотеки (как в numpy, так и в scipy). Я хочу импортировать файл с именем User. Как я могу это сделать?

+0

Да, вы на правильном пути. Каждый файл 'py' может быть импортирован как модуль. Просто напишите 'from filename import functionName', и все готово. –

+0

Вы также можете импортировать sys; sys.path.append ('dirname') ', чтобы добавить' dirname' в ваш путь python для импорта. –

+0

Ни одна из этих работ. Независимо от того, что я делаю, он продолжает говорить мне, что каталог не существует. – Jay

ответ

0

У вас есть вариант с не-matlab-подобным (не похожий на Matlab-unlike? Dis-matlab-like?), Который помещает несколько определений функций в один и тот же файл .py. После того, как файл - скажем, fundefs.py - на вашем пути, возможно, через оформив import sys; sys.path.append('path/to/fundefs');, вы можете импортировать его

  1. через import fundefs, после чего вы можете получить доступ к функциям в ней посредством fundefs.fun1, fundefs.fun2 и т.д.
  2. через from fundefs import *, который переместит все функции в текущее пространство имен. Это обычно обескураживает (и нахмуривается) для более крупных модулей, поскольку это будет загрязнять ваше пространство имен, но для нескольких собственных функций это может быть только то, что вам нужно. См. Также this very informative answer (а также комментарии в нем).
  3. как середину через import very_long_and_descriptive_module_name as shorthand для доступа к функциям, как shorthand.fun1, shorthand.fun2 и т.д. (в очевидном случае, если ваши определения находятся в файле very_long_and_descriptive_module_name.py)
0

Вы не импортировать пользователя. То, что вы хотите, это import ted. Как правило, вы должны поместить ted.py в ту же папку, что и ваш основной файл python, а не в отдельную папку.