2016-03-10 79 views
2

目前我有一个Python函数,它需要一个numpy数组并将其修改到位,我希望用户能够选择它。所以,目前,这是因为:指定在python函数中的位置操作

def my_func(signal, filter): 
    ... 
    # Compute the filter weights 
    signal *= filter 

所以我想要做的事,如:

def my_func(signal, filter, inplace=True): 
    ... 
    # Compute filter_weights 
    if inplace: 
     signal *= filter 
    else: 
     out = np.copy(signal) 
     out *= filter 
     return out 

但问题是,现在我们有一个返回的输出,并且做另一个执行路径不返回任何东西。我想知道这是否是正确的方法,或者如果有更多的pythonic方式来做到这一点。

+2

你可以有就地执行路径返回'信号' –

+2

看起来很好,你可以调用'var = my_func(...)',然后检查'如果var是None'... – Idos

+3

这可能会作为两个功能更清晰。正如标准库中所做的那样,例如,使用'list.sort'与'sorted'。 – interjay

回答

1

如果您不想提供两种功能,我会使用您当前的版本。

作为示例,Pandas库为其容器提供了sort方法,该方法可用作您的示例。如果排序是在现场完成的,通过提供inplace=True,则不返回任何内容,否则返回已排序的副本。