我在Mac上玩Python,这是默认安装版本2.7.2。出于某种原因,当我在当前目录中导入文件时,它成功导入,但是当我尝试调用文件中的函数时,它会给我:NameError: name 'gcd' is not defined
这就是文件(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的目录中,则会出错,所以我知道它正在获取正确的文件。我错过了什么?
答案 0 :(得分:2)
您需要通过导入的全局名称来引用模块中的名称。
如果您只导入 lab1
,那么请将该模块中的名称作为模块对象的属性引用:
lab1.gcd(10, 3)
或者您需要从模块中导入名称:
from lab1 import gcd
在当前模块中创建相同功能的引用。另一种拼写方式是:
import lab1.gcd as gcd