2013-07-13 4 views
0

Я играю с Python на своем Mac, это установка по умолчанию, версия 2.7.2. По какой-то причине, когда я импортировать файл в моем текущем каталоге, он успешно импортирует, но когда я пытаюсь вызвать функцию в файле, это дает мне: NameError: name 'gcd' is not definedОшибка имени Python после импорта файла

Это то, что внутри файла (lab1.py):

def gcd(x, y): 
    if x % y == 0: 
     return y 
    else: 
     return gcd(y, x % y) 

def f(x): 
    return x*x 

В подсказке, я просто набираю import lab1. Он успешно импортирует. Примечательно, что если я не в директории с lab1.py, это ошибки, поэтому я знаю, что он получает нужный файл. Что мне не хватает?

ответ

2

Вам нужно обратиться к именам в модуле с помощью глобального имени, которое вы импортировали.

Если импортировать толькоlab1, то ссылаться на имена в этом модуле в качестве атрибутов объекта модуля:

lab1.gcd(10, 3) 

или вам необходимо импортировать имена из модуля:

from lab1 import gcd 

, чтобы создать ссылку в вашем текущем модуле на ту же функцию. Альтернативным написанием будет следующее:

import lab1.gcd as gcd 
+0

Ох duhh. В этом есть смысл. По какой-то причине я не помню этого из моей последней встречи с python. –