假设我有以下功能 -
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)
上述功能很简单,但可能存在检查次数且功能非常大的情况。在这种情况下,我怎样才能避免两次写同一个函数?
答案 0 :(得分:3)
一种方法可能是根据用例使用你所使用的函数,以防由于其他原因你不能依赖try / catch模式(但如果可以,我会建议):
<tr>
<span class="na">16:00</span>
<span>|</span><a href="http:/21.28.147.68/msi/default.aspx?event_id=52514&typetran=1&ReturnLink=http://www.kino.pl/kina/przedwiosnie/repertuar.php" class="toolBox" data-hasqtip="true" aria-describedby="qtip-0">20:45</td>
</tr>
如果您只想要一个功能,您必须以某种方式告诉它何时进行检查以及何时不进行检查,或许需要一个额外的参数:
def add_check(a, b):
if isinstance(a, (float, int)) and isinstance(b, (float, int)):
return add(a, b)
def add(a, b):
return (a+b)
答案 1 :(得分:1)
按原样保留该功能,当您不需要或希望进行类型检查时,只使用+
。
i)当用户调用它并且可能提供浮动或真实以外的输入时。
使用c = add(a, b)
ii)当内部使用该函数(多次)时,我完全确定输入参数只是int或float。
使用c = a + b
您只需要编写一个函数,并且不会产生比严格必要的更多开销。