Python报错TypeError: 'NoneType'对象不可调用,求解决方法
解决 'NoneType' object is not callable 错误
这个错误的核心是你调用的player变量此时是None,而非预期的可调用函数。结合你提供的代码,我整理了几个可能的原因和对应的解决办法:
1. 确认create函数的返回值正确
你的create函数需要明确返回内部定义的player函数。如果不小心漏掉了return player这一行,或者写成了空的return,那create()就会返回None,赋值给player后自然无法调用。
确保create函数的最后一行正确返回内部函数:
def create(pos=[0,0]): def player(dir_x,dir_y,step): new_x = pos[0] + dir_x*step new_y = pos[1] + dir_y*step pos[0] = new_x pos[1] = new_y return pos return player # 这一行必须保留,用来返回内部的player函数
2. 检查player变量是否被意外覆盖
在player = create()之后,有没有对player变量重新赋值的操作?比如:
- 误写为
player = print(...)(Python3中print是函数,返回值为None) - 其他赋值语句让
player指向了None
举个反例,下面的代码就会触发这个错误:
if __name__ == '__main__': player = create() print player(1,0,10) player = None # 这里意外把player改成了None print player(0,1,5) # 调用时就会报错
你需要检查player = create()之后的所有代码,确保没有修改player变量的指向。
3. 排查拼写错误
你提供的代码片段最后一行是print play...,如果实际代码里是把player拼成了play,也可能引发问题(不过从错误信息看,这一行的拼写是正确的,但还是要确认所有调用player的地方拼写无误)。
按照上面的步骤排查,应该能快速定位并解决问题。
内容的提问来源于stack exchange,提问作者wu peter
相关产品推荐
相关产品推荐

