从函数到函数传递无变量

时间:2016-11-11 20:07:46

标签: python function python-3.x

我已经基于sounddevice playrec()

创建了一个播放和录制功能

请参阅:python-sounddevice

他们使用以下input参数方法

def playrec(data, samplerate=None, channels=None, dtype=None,
            out=None, input_mapping=None, output_mapping=None, blocking=False,
            **kwargs):

所以我想做同样的事情并将一些变量传递给默认函数 像:

import numpy as np
T = 10
fs = 44100
t =  np.arange(10*fs)
x = np.sin(2*np.pi* 440*t) + 0.5*np.sin(2*np.pi* 880*t) + 0.25 * np.sin(2*np.pi* 1320*t)

rec1 = customplayrec(x.T, fs, input_channels=2, output_channels=2, repeats=3)

def customplayrec(data, samplerate=None, input_channels=None, output_channels=None,
           repeats=None, l0=None, cascade=False, dtype=None, out=None,
           input_mapping=None, output_mapping=None, blocking=False, **kwargs):
    import sounddevice as sd  
    #... filter some variables
    record = sd.playrec(data, samplerate, input_channels, dtype, out,
                        input_mapping, output_mapping, blocking, kwargs)
    #... do something with data...
    return(record)

结果是此功能中断(它不播放和录制任何声音) 我没有得到错误...所以我测试了我打破的地方,我发现了。在函数开始之前的一行一切正常。
Spyder也不会显示None的变量 所以我认为它与传递输入值有关。

如果这些变量不是空的,我怎么能通过这些变量。

  • 方法或模块

如果一个类似的问题都准备好了我搜索但不知道正确的关键词...

提前致谢

2 个答案:

答案 0 :(得分:1)

让我将我的评论表达为答案(有预订,因为我无法测试您的代码):

  1. 确保您的数据实际上是一个wave而不仅仅是一个常量数组 值。我怀疑你忘记将t包含在三角函数的参数中。

  2. sd.playrc来电的最后一个参数应为**kwargs,而不只是kwargs

答案 1 :(得分:0)

在评论之后看起来我的脚本中使用的方法没有错...它可能是与python-sounddevice相关的问题。 在python-sounddevice的github页面上,我看到可能存在关于同一主题的相关问题...
sounddevice issue 38
所以在这一刻我无法进一步,但至少我有一个答案......