我是Python的新手,如果我在编写这个问题时没有使用正确的白话,我会道歉。我在Windows机器上使用Python 3.6.1。我提供了一个我正在解决的问题的实例。
假设我编写了一个保存在Demo_func.py文件中的模块。它包含以下功能:
def chebyshev_nodes(degree, domain):
return Chebyshev.basis(degree,domain).roots()
然后我运行以下脚本:
from numpy.polynomial.chebyshev import Chebyshev
from Demo_func import chebyshev_nodes
chebyshev_nodes(5, [1,5])
它产生了这个错误:
NameError:名称'Chebyshev'未定义
如果我在我的脚本中编写函数chebyshev_nodes,如下所示,那么它的工作正常。
from numpy.polynomial.chebyshev import Chebyshev
def chebyshev_nodes(degree, domain):
return Chebyshev.basis(degree,domain).roots()
chebyshev_nodes(5, [1,5])
我的理解是,进口切比雪夫是全球性的。但不知何故,这确实在我的模块Demo_func中运行。如何编写依赖Chebyshev类的模块?
答案 0 :(得分:-1)
正如user2357112在上面的评论中指出的那样,该模块是全局初始化的,但名称不是。解决方案涉及在Demo_func.py文件中的函数中加载Chebyshez类。
def chebyshev_nodes(degree, domain):
from numpy.polynomial.chebyshev import Chebyshev
return Chebyshev.basis(degree,domain).roots()