关于python:NameError:未定义x

NameError: x is not defined

我想制作一个简单的绘图函数plot2d

1
2
3
4
5
6
def plot2d(xmin,xmax,func):

    x=np.linspace(xmin, xmax, num=50)    

    plt.plot(x,func)
    plt.show()

我们的想法是用x输入变量func,就像x**2。

编辑*错误如下:

1
2
3
4
>>> plot2d(-10,10, x**2)
Traceback (most recent call last):
File"<stdin>", line 1, in <module>
NameError: name 'x' is not defined

编辑**我认为问题在于,当您第一次调用函数时,还没有创建linspace x。这起作用:

1
2
3
4
5
6
7
8
9
import numpy as np
import matplotlib.pyplot as plt

def plot2d(xmin,xmax):
x=np.linspace(xmin, xmax, num=50)    

func=input('Define fucntion: ')
plt.plot(x,func)
plt.show()


您可能想了解lambda。稍微更改一下代码就足够了:

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt

def plot2d(xmin,xmax,func):

    x=np.linspace(xmin, xmax, num=50)    

    plt.plot(x,func(x)) #func -> func(x)
    plt.show()

#pass a unnamed lambda as a param:
plot2d(-10, 10, lambda x: x*x)


1
2
3
4
5
6
7
8
9
10
11
12
13
from pylab import *

def plot2d(xmin, xmax, func):
    x=np.linspace(xmin,xmax,num=50)
    y=func(x)
    plot(x,y)
    show()

def func(x):
    y=x**2
    return y

plot2d(0,10,func)

结果:

enter image description here