Импорт глобально и локально - PullRequest
3 голосов
/ 04 февраля 2010

Я создал модуль, который будет использоваться в нескольких скриптах 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: глобальное имя 'нули' не определено".

Что мне здесь не хватает?

1 Ответ

3 голосов
/ 04 февраля 2010

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 внутри его функции, и мой ответ на оригинальный вопрос.

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