为了账号安全,请及时绑定邮箱和手机立即绑定

从另一个脚本导入变量

从另一个脚本导入变量

喵喵时光机 2021-05-30 02:22:52
我正在创建个人助理。我想从另一个文件导入一个变量。尽管有很多与我的问题相关的问题,但我找不到有效的答案。系统工作方式示例具有始终监听功能的脚本我说了一个字(例如:“ hello”),它运行了另一个功能我说 sthg(例如:'在巴塞罗那的时间')它采用最后一部分(例如:“ Barcelona”)并将其存储到变量中(例如:loc)它运行另一个脚本(例如:time.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()                breakPD:当我说“你好”时,还有一部分代码会调用这个函数。time.pydef f():    from main.googlecheck() import loc    print(loc)f()此时,我想在 time.py 文件中获取 loc 变量。如果我有两个文件,并且已经定义了一个变量(例如:loc = Valls),并且没有函数,那么它将起作用。我正在使用导入方法来执行此操作,我认为这可能是我做错了,因为尽管未严格定义变量,但该方法仍应正常工作。任何帮助都非常感谢。谢谢,
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

这一行:

from main.googlecheck() import loc

……没有多大意义。

您正在调用main.googlecheck()- 如果您之前已经完成,这将起作用import main- 然后尝试将结果作为模块导入 - 这不会。该函数的结果不是模块。实际上,因为您什么都没有return,所以结果是None。因此,您正在尝试importNone.

您唯一可以做的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,用于保存模块对象。我不确定你为什么想要做其中的任何部分。


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号