我正在创建个人助理。我想从另一个文件导入变量。尽管有很多问题与我的问题有关,但我找不到有效的答案。
main.py
def googlecheck():
attempts = 0
# Importar fitxers - config.py = variables globals
import config
# Salutació de l'assistent a partir de la funció
hi = ['Gerard']
tts('Hola ' + random.choice(hi))
while True:
print(1)
r = sr.Recognizer()
with sr.Microphone() as msg:
r.adjust_for_ambient_noise(msg)
audio = r.listen(msg, phrase_time_limit=5)
try:
# Inicia la variable global mainvr
config.init()
config.mainvr = r.recognize_google(audio, language='es-ES')
print(config.mainvr)
except:
# Si no es detecta cap paraula, suma 1, si s'arriba a 3, (3 vegades error), torna a la función principal.
attempts += 1
if attempts >= 3:
activ()
break
continue
hora = ['hora', 'en']
exit = ['salir', 'adiós', 'hasta pronto', 'vete', 'cállate']
if all(a in config.mainvr for a in hora):
loc = config.mainvr[8:]
print(loc)
import hora
if any(b in config.mainvr for b in exit):
break
else:
# Si no es detecta cap paraula, suma 1, si s'arriba a 3, (3 vegades error), torna a la función principal.
attempts += 1
if attempts >= 3:
activ()
break
PD:当我说“你好”时,还有另一部分代码调用此函数。
time.py
def f():
from main.googlecheck() import loc
print(loc)
f()
这时,我想在time.py文件中获取loc变量。如果我有两个文件,并且已经定义了一个变量(例如:loc = Valls),并且没有函数,那么它将起作用。
我正在使用import方法来执行此操作,我认为这可能是我做错了,因为尽管未严格定义变量,但该方法应该可以工作。任何帮助都非常感谢。 谢谢,
答案 0 :(得分:1)
此行:
from main.googlecheck() import loc
...没什么意义。
您正在调用main.googlecheck()
(如果您以前做过import main
会起作用),然后尝试将结果作为模块导入,但不会。该功能的结果不是模块。实际上,因为您在任何地方都不return
,所以结果是None
。因此,您正在尝试从import
None
进行购买。
您只能import
是模块中的模块或全局变量(常量,变量,函数,类,其他模块,无论什么,只要它们是全局名称)。
(加上语法无效,但这并不是那么重要。如果您试图做有意义的事情而只是将括号放在错误的位置,则固定语法将是关键,但是如果您尝试首先要做没有意义的事情,无论如何尝试都没关系。)
我想您要在此处执行的操作是最后更改googlecheck to
return loc`,然后将此代码行更改为:
loc = main.googlecheck()
那当然不能解决您的所有问题。仅举一个例子:loc
不会被置位,除非if all(a in config.mainvr for a in hora)
至少发生一次。因此,如果说any(b in config.mainvr for b in exit)
是真实的,那么当UnboundLocalError
退出循环时,您将得到一个break
,然后尝试return loc
而无需创建它
此外,您的代码正在做一些奇怪的事情,可能会或可能不会出错。例如,您import hora
位于循环中间。我不确定您希望这样做。实际执行的操作是第一次在hora
中运行顶级代码,而以后每次均不运行。而且,无论哪种方式,它将创建一个名为hora
的本地变量,该变量保存模块对象。我不确定为什么要这么做。