python 错误类型汇总

1、TypeError: 'str' object is not callable

1 >>> a = 'abd13df'
2 >>>str = 'abc'
3 >>>str(123)
4 
5 # str(object),该函数用来将object强制转换为字符串类型,
6 # 但是调用时却出现TypeError: 'str' object is not callable
7 
8 # 原因:因为前面str定义为指向'123',所以编译器把str看成一个指向字符串常量的对象,而不是强制转换类型符,所以需要del str,然后再使用str(123)就不会报错

2、TypeError: not all arguments converted during string formatting

1 print('dict[%d] is ' % (i, dict[i]))
2 
3 # 编译器报错:TypeError: not all arguments converted during string formatting
4 # 原因:字符串里的占位符(%)数量和后面的参数数量不一致
5 # 正确为:print('dict[%d] is %f' % (i, dict[i])) 或者 print('dict[%d] is ' % i, dict[i])

3、TypeError: smo() got multiple values for argument 'toler'

1 def smo(C, toler, maxIter):
2     pass
3 
4 smo(100, 10000, toler=0.001)
5 
6 # 编译器报错:TypeError: smo() got multiple values for argument 'toler'
7 # 原因:多次给同一个参数'toler'赋值:在调用smo时,传递实参时将位置顺序搞错了,对于位置实参时根据位置的先后来顺序赋值的,但是上面代码在调用smo时,先是把10000赋值给形参'toler',之后又以关键字的形式为'toler'赋值为0.001,编译器不知道该用哪一个值作为'toler'的值,所以会报错:为一个变量传递了多个值,并且这样还导致没有实参传递给形参maxIter
8 # 正确为:smo(100, toler=0.001, 10000)