1

我正在编写一个程序,每次从一堆词干中对音乐进行不同的排序。我现在有了一个带有按钮的基本 GUI,这些按钮可以触发曲目的重新排序、播放和弹跳。

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

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

下面的代码示例是我所拥有的,它对我不起作用。

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

:::

序列():

blah blah, sequencing.

return output

玩():

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

play(output)

:::

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

请帮忙 :(

4

1 回答 1

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...
于 2015-07-16T14:50:06.783 回答