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)