Python: функция импорта из .py файла с необходимыми модулями - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь сделать что-то довольно простое.Я хочу импортировать функцию из файла .py, но использовать модули, импортированные из моего основного скрипта.Например, следующая функция сохраняется:

. / Files / sinner.py

def sinner(x):
  y = mt.sin(x)
  return y

Затем я хочу запустить sinner, используя математические выражения как mt

from sinner import sinner
import math as mt
sinner(10)

ThisНе удивительно, выдает ошибку

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-50006877ce3e> in <module>()
      2 import math as mt
      3 
----> 4 sinner(10)

/media/ssd/Lodging_Classifier/sinner.py in sinner(x)
      1 import math as mt
----> 2 
      3 def sinner(x):
      4   y = mt.sin(x)
      5   return y

NameError: global name 'mt' is not defined

Я знаю, как справиться с этим в R, но не в Python.Что мне не хватает?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Вы также можете передать mt как параметр sinner

def sinner(x, mt): code
0 голосов
/ 22 мая 2018

Математический модуль не существует в пространстве имен sinner.py.В отличие от R, импортированные модули или пакеты не охватывают глобальное пространство имен.Вам нужно импортировать math в файл sinner.py:

import math as mt

def sinner(x):
  y = mt.sin(x)
  return y

В качестве альтернативы (и я действительно не знаю, зачем вы это делаете), вы можете передать модуль как аргументsinner функция:

def sinner(mt, x):
  y = mt.sin(x)
  return y

И затем вы можете передать различные модули, которые реализуют функцию sin:

from .sinner import sinner
import math as mt
import numpy as np
sinner(mt, 10)
sinner(np, 10)
0 голосов
/ 22 мая 2018

Вам нужно импортировать математику в sinner.py.Он импортирует функцию со всеми зависимостями в файле.если зависимость отсутствует в файле, она не будет работать.

sinner.py

import math as mt

def sinner(x):
  y = mt.sin(x)
  return y

тогда в другом файле ...

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