NameError:未定义函数名称

时间:2015-08-22 03:26:42

标签: python nameerror

我正在用Python 2.7.6编程一个小的Python模块(默认,2015年6月22日,17:58:13),我正在使用IPython 1.2.1来运行我的程序。

该模块将包含几个带幂级数的数学函数评估。我将python函数定义与python函数测试分开。

以下是我的PowerSeries.py 的代码:

### Computations of some functions by power series ###

def exp(x):
    """Exponential function"""
    exp=1.0
    term=1.0
    iteration=1
    factorial=1
    while(abs(term/factorial)>1e-10):
        factorial*=iteration
        term*=x
        exp+=term/factorial
        iteration+=1
    return exp

def hyperbolicCosine(x):
    """Hyperbolic cosine function"""
    cosh=1.0
    term=1.0
    iteration=1
    factorial=1
    while(abs(term/factorial)>1e-10):
        factorial*=iteration
        term*=x
        if iteration%2==0:
            cosh+=term/factorial
        iteration+=1
   return cosh

def sine(x):
    """Sine function"""
    sine=0.0
    term=1.0
    iteration=1
    factorial=1
    while(abs(term/factorial)>1e-10):
        factorial*=iteration
        term*=x
        if iteration%2==1:
            sine+=term/factorial                
            term=-term
        iteration+=1
    return sine

def cosine(x):
    """Cosine function"""
    cosine=1.0
    term=1.0
    iteration=1
    factorial=1
    while(abs(term/factorial)>1e-10):
        factorial*=iteration
        term*=x
        if (iteration)%2==0:
            term=-term
            cosine+=term/factorial              
        iteration+=1
    return cosine

以下是我的代码test.py

### Tests for PowerSeries Module ###
from math import pi
from PowerSeries import *

# Tests of exponential
print "### Tests of exponential ###"
x=-2
print("x=%f exp(x)=%.10f" % (x,exp(x)))
x=-1
print("x=%f exp(x)=%.10f" % (x,exp(x)))
x=0
print("x=%f exp(x)=%.10f" % (x,exp(x)))
x=1
print("x=%f exp(x)=%.10f" % (x,exp(x)))
x=2
print("x=%f exp(x)=%.10f" % (x,exp(x)))

# Tests of hyperbolic cosine
print "### Tests of hyperbolic cosine ###"
x=-2
print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))
x=-1
print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))
x=0
print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))
x=1
print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))
x=2
print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))


# Tests of sine
print "### Tests of sine ###"
x=0
print("x=%f sin(x)=%.10f" % (x,sine(x)))
x=pi/6
print("x=%f sin(x)=%.10f" % (x,sine(x)))
x=pi/4
print("x=%f sin(x)=%.10f" % (x,sine(x)))
x=pi/3
print("x=%f sin(x)=%.10f" % (x,sine(x)))
x=pi/2
print("x=%f sin(x)=%.10f" % (x,sine(x)))

# Tests of cosine
print "### Tests of cosine ###"
x=0
print("x=%f cos(x)=%.10f" % (x,cosine(x)))
x=pi/6
print("x=%f cos(x)=%.10f" % (x,cosine(x)))
x=pi/4
print("x=%f cos(x)=%.10f" % (x,cosine(x)))
x=pi/3
print("x=%f cos(x)=%.10f" % (x,cosine(x)))
x=pi/2
print("x=%f cos(x)=%.10f" % (x,cosine(x)))

在添加hyperbolicCosine定义之前,一切正常。 执行tests.py文件会产生一个我无法解决的NameError:

     19 print "### Tests of hyperbolic cosine ###"
     20 x=-2
---> 21 print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))
     22 x=-1
     23 print("x=%f cosh(x)=%.10f" % (x,hyperbolicCosine(x)))

NameError: name 'hyperbolicCosine' is not defined

欢迎提供帮助。

1 个答案:

答案 0 :(得分:1)

我无法评论,因为我太新了,但是从特定模块明确导入您需要的东西总是更好的主意。如果你总是这样做,它可能有助于缩小未来的问题(即你会得到一个ImportError而不是NameError。)

此外,.pyc文件基于时间戳重新生成。似乎这个问题更可能是由于iPython在内存中有旧模块。