实现同一功能的不同版本的最佳方法是什么?

时间:2016-02-24 21:06:02

标签: python function

假设我有以下功能 -

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)

上述功能很简单,但可能存在检查次数且功能非常大的情况。在这种情况下,我怎样才能避免两次写同一个函数?

2 个答案:

答案 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&amp;typetran=1&amp;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

您只需要编写一个函数,并且不会产生比严格必要的更多开销。