Python拼接两个字符串时提示无法找到变量,如何解决?
问题原因
Python的变量作用域规则规定:如果在函数内部尝试修改某个变量,解释器会默认将该变量判定为函数内部的局部变量,而非全局作用域的同名变量。你当前在handle_input函数内对word执行+=拼接操作属于修改变量的行为,解释器会优先查找函数内部的局部变量word,而你没有在函数内初始化该局部变量,因此会抛出变量未定义的报错。
你之前单独写word = letter未报错的原因是,该语句实际是在函数内部创建了一个和全局变量同名的局部变量,并没有尝试读取未定义的局部变量,因此不会触发报错,但此时你修改的也不是顶层定义的全局word。
解决方案
在函数内部修改全局变量前,使用global关键字声明该变量属于全局作用域即可,修改后的代码如下:
word_dict = PyDictionary() repeats = 5 word = "e" def handle_input(x, y, letter): global word # 新增这行声明操作的是全局变量word word += letter print(word) coords = make_coords(x, y) for list in grid: for button in list: button.update(disabled=True) for coord in coords: x = coord[0] y = coord[1] list = grid[y] button = list[x] button.update(disabled=False)
内容的提问来源于stack exchange,提问作者Nathan Lod
相关产品推荐
相关产品推荐

