Python 2.7从函数中获取返回值而不再运行函数中的函数?

时间:2014-12-13 18:25:24

标签: python function return

有人知道怎么做吗?

我正在尝试获取函数的返回值..但我不希望该函数再次运行。它的语音识别,因此,每次再次运行时,它会尝试查看用户说的内容。我只需要保存变量。

顺便说一句,我也不能使用全局变量。

编辑:

def voiceRecognition(self):
    <A bunch of voice recognition stuff here>
    return whatUserSaid

我称之为的代码:

 SPEECH.voiceRecognition()

SPEECH和self的原因是b / c它是类的一部分,我在不同的Python文件中调用它。现在它正在工作......我只需要返回变量whatUserSaid,而不是让函数重新运行它为了获取值所做的事情。

2 个答案:

答案 0 :(得分:1)

从您给定的代码中,您似乎已将其构建到一个类中,因此我将对此进行一些假设。

class VoiceRecognizer(object):
    def __init__(self, *args, **kwargs):
        self.last_phrase = None

    def voiceRecognition(self):
        # your code here
        self.last_phrase = whatUserSaid
        return whatUserSaid

这应该让你这样做:

v = VoiceRecognizer()
v.voiceRecognition()
v.last_phrase # is the last return of voiceRecognition

但我不确定你为什么要这样做。你不能把它保存到一个变量吗?

last_phrase = v.voiceRecognition() # like this?

答案 1 :(得分:1)

您可以使用类实例并记住该值。

class VoiceRecognizer():

     def __init__(self):
         self._parsed = {}

     def recognize(self, speech):
         key = function_to_turn_speech_into_unique_string(speech)
         if key not in self._parsed:
             self._parsed[key] = recognize_function(speech)
         return self._parsed[key]

 recognizer = VoiceRecognizer()
 recognizer.recognize(speechA)  # will compute
 recognizer.recognize(speechA)  # will use cache
 recognizer.recognize(speechB)  # will compute if speechA == speechB