Python - 从另一个函数中的函数中检索值,而不是重新运行原始函数

时间:2015-07-16 14:11:21

标签: python function return pydub

我正在编写一个程序,每次都会以不同的方式对音乐进行排序。我现在有了一个带有按钮的基本GUI,可以触发重新排序,播放和弹跳音轨。

因此,在执行时,程序会触发重新排序功能一次,并返回准备好播放的输出值。 这可以使用播放功能播放,但要在功能中接收输出,必须重新触发初始功能,这是不对的。

每次用户想要重放曲目时,我都不想重新触发排序功能,我只需要访问初始返回数据。我无法在重新排序函数之外分配返回的数据,因为它只会被保存一次,并且只有第一个序列可供播放。

以下代码示例就是我所拥有的,它对我无效。

我需要的是每次重新排序时保存变量的方法,并使其可以被播放功能访问。播放不应仅仅为了获得价值而重新触发重新排序。

:::

重排序():

blah blah, sequencing.

return output

播放():

output=Resequence()   # the value shouldnt change on each play. 

play(output)

:::

输出是来自PyDub的音频片段。我尝试将其保存在文本文件中,这显然无效。

请帮助:(

1 个答案:

答案 0 :(得分:1)

如果Resequence是一个函数而不是一个类方法,那么你可能需要使用一个全局变量来存储所需的序列。这样的事情:

seq = None
def Resequence():
    global seq
    if seq != None:
        return seq
    #now do your blah, blah, blah
    seq = my_generated_sequence
    return seq

但是我觉得你需要让Resequence成为一个对象的一部分,每次允许多次调用不同的文件等等。

class Player(object):
     def __init__(self):
         self._seq = None
     def Resequence(self):
        if self._seq != None:
           #same logic here...