2010-02-04 6 views
3

Я создал модуль, который будет использоваться в нескольких сценариях python. Структура выглядит следующим образом:Импорт по всему миру

Главный файл:

import numpy as np 
from mymodule import newfunction 
f = np.arange(100,200,1) 
a = np.zeros(np.shape(f)) 
c = newfunction(f) 

mymodule.py:

def newfunction(f): 
    import numpy as np 
    b = np.zeros(np.shape(f)) 
    return b 

if __name__ == "__main__": 
    import numpy as np 

Не возражаете функциональность этой программы, но проблема в том, что, когда я его запускаю , Я получаю «NameError: глобальное имя« нули »не определено».

Что я пропустил здесь?

+0

Возможно, мне что-то не хватает, но ... почему бы не вставить импорт вверху mymodule.py? – jamieb

+0

Ваша ошибка не может исходить из вашего кода: в ней нет глобальных «нулей». Там есть глобальная «арханге», поэтому должна быть ошибка :-) –

+0

Я также пробовал это ... То же самое:/Я попытался вставить «import numpy as np» как в верхней части модуля (за пределами функция) и локально внутри функции. – user265978

ответ

3

mymodule.py не видит:

import numpy as np 

заявление (ы). Операция «import» в Python не работает как #include в C++, она просто создает новый словарь объектов, содержащихся в импортированном модуле. Если вы хотите использовать идентификатор 'np' в этом словаре, вы должны явно импортировать его там.

Что касается

if __name__ == "__main__": 
    import numpy as np 

- это только называется, когда вы выполняете mymodule.py как отдельный скрипт, который, вероятно, это не так в этом вопросе.

EDIT:

OP изменил пример кода, добавив import numpy as np в его функции, и мой ответ на первоначальный вопрос.

+0

Я пробовал это, но все та же ошибка. – user265978

+0

mymodule.py отлично работает как автономный скрипт, но когда я вызываю его из основного .py-файла, я получаю ошибку «global name .. not defined». – user265978

+0

Я тоже попробовал, и это работает для меня! – EOL

Смежные вопросы