Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 名称错误:名称';第一';没有定义_Python_Spyder_Nameerror - Fatal编程技术网

Python 名称错误:名称';第一';没有定义

Python 名称错误:名称';第一';没有定义,python,spyder,nameerror,Python,Spyder,Nameerror,我是python新手,我正在尝试获取函数的绘图。 这是我的代码: class Optic(): def __init__(self): ''' param define ''' global time,lamda, light_speed, Fc, D, z, beta, T0 self.__time = np.linspace(-400,400, 1600) #Picosec self.__

我是python新手,我正在尝试获取函数的绘图。 这是我的代码:

class Optic():
    def __init__(self):
        '''
        param define
        '''
        global time,lamda, light_speed, Fc, D, z, beta, T0
        self.__time = np.linspace(-400,400, 1600) #Picosec
        self.__lamda = 1550000 #Picometer
        self.__light_speed = 0.3 #meter/Picosec
        self.__Fc=light_speed/lamda #Hz
        self.__D = 17*np.power(10,-6) #sec/meter
        self.__z=[0,10000,20000,30000] #meter
        self.__beta = (-(np.power(lamda,2)/(2*np.pi*light_speed))*D) #sec/meter
        self.__T0 = 200
#        time = np.linspace(-400*np.power(10,-12), 0.5*np.power(10,-12), 400*np.power(10,-12)) #sec
#        lamda = 1550*np.power(10,-9) #meter
#        light_speed = 3*np.power(10,8) #sec/meter
#        Fc=light_speed/lamda #Hz
#        D = 17*np.power(10,-6) #sec/meter
#        z=[0,10000,20000,30000] #meter
#        beta = (-(np.power(lamda,2)/(2*np.pi*light_speed))*D) #sec/meter
#        T0 = 20*np.power(10,-12)

    def firstPulse(self):
        global first
        first = np.exp(-0.5*np.power(time/T0,2))

def main():
    plt.plot(first, time)
    plt.show()


if (__name__ == "__main__"): 
    main()
但我得到:

NameError: name 'first' is not defined

顺便说一句,我使用的是Spyder。

您有init optical并调用def firstPulse(self),它定义了该变量

大概是这样的:

def main():
    opt = Optic():
    opt.firstPulse()
    plt.plot(first, time)
    plt.show()
当你打电话的时候

plt.plot(first, time)
你还没有先定义。 你可以把

first = 0
在代码的某个地方。 然后,您可能会看到
时间
(和
plt
的问题,除非您有适当的导入)

第一个
传递到
光学
可能更有意义。事实上,所有的
全局
变量都可以发送到init函数

def __init__(self):
可能成为

def __init__(self, first):
然后,如果您在init方法中设置了self,那么您可以先参考self.first


一般来说,最好避免使用全局变量。

您在哪里定义
plt
?在调用
main()
之前是否调用了
firstPulse()