【发布时间】:2016-02-24 21:06:02
【问题描述】:
假设我有以下功能 -
def add(a, b):
if isinstance(a, (float,int)) and isinstance(b, (float,int)):
return (a+b)
else:
raise TypeError("Invalid Parameters")
现在这个函数在两种情况下使用——
i) 当用户调用它并且可能提供非浮点或实数的输入时。
ii) 当函数在内部使用时(多次),我完全确定输入参数只会是 int 或 float。
在内部使用函数时如何避免无用的类型检查?
或者, 上面的函数和下面的函数作为一个函数最好的写法是什么?
def add(a, b):
return (a+b)
上面的函数很简单,但可能会出现检查次数很多且函数很大的情况。在这种情况下,如何避免两次编写相同的函数?
【问题讨论】:
-
类型检查有什么问题?
-
当有许多不需要的检查但我确信输入是有效的时,它们会在复杂情况下造成不必要的开销。
-
我猜你可以添加第三个可选参数。如果你不想要错误检查,用 True 调用它,但默认为 False?
-
@YashuSeth 在第一种情况下,如果输入不是 int 或 float,您希望您的函数做什么?
-
@YashuSeth 不进行检查有什么问题,而让
+自行引发错误?