&引用;名称错误:全局名称';ser';“未定义”;python推特
我在Python中有以下问题,但我不知道为什么:&引用;名称错误:全局名称';ser';“未定义”;python推特,python,pyserial,Python,Pyserial,我在Python中有以下问题,但我不知道为什么: "Traceback (most recent call last): File C:/Users/W7-32/Downloads/TW31.py", line 82, in <module> driptwit() ## Llamada a la funcion driptwit File "C:/Users/W7-32/Downloads/TW31.py", line 71, in driptwit ser
"Traceback (most recent call last): File
C:/Users/W7-32/Downloads/TW31.py", line 82, in <module>
driptwit() ## Llamada a la funcion driptwit File "C:/Users/W7-32/Downloads/TW31.py", line 71, in driptwit
ser.write("1") NameError: global name 'ser' is not defined
虽然端口已连接Arduino,但它给了我未定义的错误
以下是.py归档文件:
我使用Pycharm和Python2.7解释器,Windows7 32位。
ser
不是全局变量。您在for循环中定义它,因此其范围仅限于该循环。在for循环上方执行以下操作:
ser = None
for device in locations:
这使得它的范围不仅仅局限于for循环。for循环现在将使用在循环中调用它时刚刚定义的变量。
然后,在函数体中,您需要在顶部添加global
关键字,以确保调用ser
时得到的是全局变量,而不是试图创建新变量。像这样:
def checkokay():
global ser
ser.flushInput()
在另一个函数中也是如此:
def driptwit():
global ser
status = []
现在,您的变量是全局变量,您的函数正在使用该变量的全局版本。请在问题中显示您的代码。您很可能试图使用拼写错误或超出范围的名称。Seconded。除了像Mega这样的链接是可疑的这一事实之外,你应该将你的代码简化为一个代码来隔离问题,而不是要求我们花时间做同样的事情,因为社区免费提供帮助。准备好了吗,现在正确了吗?谢谢
def driptwit():
global ser
status = []