今天在写代码的过程中发现一种错误,特此进行记录。
在Python当中有可能出现自定义变量名和函数名重名,会导致报错,一种报错模式是"xxx is not callable"
如以下代码:
len = int(input())
list = []
for i in range(len):
list.append(2*i)
list.append(2*i + 1)
print(len(list))
预期输出应该是变量2*len,然而实际运行会报错"'int' object is not callable"。分析原因是变量len创建在前,代码在执行过程中,始终将len解释为int型变量,而int型变量是无法作为函数被调用的,所以无法执行len(list)。
解决办法就是仔细检查代码中是否存在不同对象命名重复。