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

问题描述:

有谁知道如何做到这一点?Python 2.7从函数中获取返回值而不再运行函数中的内容?

我想获得函数的返回值..但我不希望函数再次运行。这是语音识别,所以每当它再次运行时,它都会尝试查看用户所说的内容。我只需要保存的变量。

我也不能使用全局变量的方式。

编辑:

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

的代码,我把它叫做:

SPEECH.voiceRecognition() 

的原因语音和自我为B/C是一个类的一部分,我在调用它不同的Python文件。现在它正在工作......我只需要返回变量whatUserSaid,而不是通过重新运行函数来获取值。

+1

那么,你的代码在哪里? – 2014-12-13 18:27:33

+1

需要显示一些代码 - 你知道当你调用一个函数时,你可以将它分配给一个变量 - 如果你想避免全局变量,那么你需要考虑类。 – 2014-12-13 18:27:40

+0

我们需要在调用该函数时看到代码! – 2014-12-13 18:31:02

从你给出的代码看,你已经将它构建到一个类中,所以我要对此做出一些假设。

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? 
+0

工作...谢谢。我不能这么做,因为我使用的模块是绝对垃圾。我实际上不得不编辑它,甚至使其工作。 – Richard 2014-12-13 18:51:13

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

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 
+0

你第一次把新东西放到'辨认'的方法中,你会在递归过程中失败太深 – 2014-12-13 18:37:22

+0

花了我一分钟才明白你在说什么 - 我们都是错的。代码会出错,但是'NameError:全局名'识别'未定义'。我打算调用现有的“识别” - 而不是“self.recognize” - 因此我将其重命名为“recognizable_function”。 – 2014-12-13 19:12:58