Python 2.7从函数中获取返回值而不再运行函数中的内容?
有谁知道如何做到这一点?Python 2.7从函数中获取返回值而不再运行函数中的内容?
我想获得函数的返回值..但我不希望函数再次运行。这是语音识别,所以每当它再次运行时,它都会尝试查看用户所说的内容。我只需要保存的变量。
我也不能使用全局变量的方式。
编辑:
def voiceRecognition(self):
<A bunch of voice recognition stuff here>
return whatUserSaid
的代码,我把它叫做:
SPEECH.voiceRecognition()
的原因语音和自我为B/C是一个类的一部分,我在调用它不同的Python文件。现在它正在工作......我只需要返回变量whatUserSaid,而不是通过重新运行函数来获取值。
从你给出的代码看,你已经将它构建到一个类中,所以我要对此做出一些假设。
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?
工作...谢谢。我不能这么做,因为我使用的模块是绝对垃圾。我实际上不得不编辑它,甚至使其工作。 – 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
你第一次把新东西放到'辨认'的方法中,你会在递归过程中失败太深 – 2014-12-13 18:37:22
花了我一分钟才明白你在说什么 - 我们都是错的。代码会出错,但是'NameError:全局名'识别'未定义'。我打算调用现有的“识别” - 而不是“self.recognize” - 因此我将其重命名为“recognizable_function”。 – 2014-12-13 19:12:58
那么,你的代码在哪里? – 2014-12-13 18:27:33
需要显示一些代码 - 你知道当你调用一个函数时,你可以将它分配给一个变量 - 如果你想避免全局变量,那么你需要考虑类。 – 2014-12-13 18:27:40
我们需要在调用该函数时看到代码! – 2014-12-13 18:31:02