Discuss / Python / 函数return 如果返回表达式的话紧接着调用总是出错

函数return 如果返回表达式的话紧接着调用总是出错

Topic source

import math

def quadratic(a,b,c):

if not (isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))):

   raise TypeError('bad operand type')

return (-b+math.sqrt(b*b-4*a*c))/(2*a) (-b-math.sqrt(b*b-4*a*c))/(2*a)

print('quatratic(1,3,-4)=',quadratic(1,3,-4))

如上写,就会报TypeError: 'int' object is not callable错误,如果返回值写成tuple形式

return ((-b+math.sqrt(b*b-4*a*c))/(2*a),(-b-math.sqrt(b*b-4*a*c))/(2*a))

就不会报错,我看学习例子有 return nx ny这样的,以为都可以不用写成tuple形式呢,不写成tuple形式时,如果去掉后面的print语句,运行也不会报错,不写成tuple形式貌似后面的函数调用函数名被解释成一个变量了。

判断输入参数类型应该是用或来连接吧?与的话逻辑有问题if not isinstance(a,(int,float)) or not isinstance(b,(int,float)) or not isinstance(c,(int,float)):


  • 1

Reply