最后导入的文件将覆盖先前文件的语句。指定导入变量的更好方法?

时间:2019-04-15 11:12:40

标签: python lambda alexa

嘿stackoverflow社区

我是这个论坛的新手,也是python开发的新手,但Alexa / Python覆盖了来自不同文件的类似命名变量时遇到了问题。

在我的语言学习技能中,我希望Alexa专门将用户的“开始特定练习”意图链接到特定练习文件,并从该文件中导入介绍,关键字和答案以回馈给用户。

我的导入问题是Python获取了最后导入的文件,并覆盖了先前文件的语句。

我知道我可以根据惯例更改变量名,但是然后不必创建很多单独的处理程序函数,这些函数将用户意图链接到特定的文件/函数,并且基本上在所有相同?

在导入函数或在函数内部时,是否有更好的方法来更有效地指定这些变量?

导入文件和变量

from übung_1 import intro_1, keywords_1, real_1
from übung_2 import intro_1, keywords_1, real_1

使用变量

def get_practice_response(practice_number):
    print("get_practice_response")
    session_attributes = {}
    card_title = "Übung"
    number = randint(0, len(keywords_1))
    print(intro_1 + keywords_1[number])
    speech_output = intro_1 + keywords_1[number]
    session_attributes["answer"] = real_1[number]
    session_attributes["practice_number"] = practice_number
    session_attributes["keyword"] = keywords_1[number]
    reprompt_text = "test"
    should_end_session = False
    return build_response(session_attributes, build_speechlet_response(
        card_title, speech_output, reprompt_text, should_end_session))

我希望给出具体询问文件的内容,而不是最新文件中的可变内容。

遗憾的是,我尚未找到针对此特定问题的解决方案,希望有人能帮助我向正确的方向指正。 预先非常感谢。

2 个答案:

答案 0 :(得分:2)

可能最容易导入模块,如下所示:

import übung_1
import übung_2

该引用将内容称为übung_1.intro_1übung_2.intro_1übung_1.keywords_1,依此类推。

答案 1 :(得分:1)

正如您所指出的,这两行

from übung_1 import intro_1, keywords_1, real_1
from übung_2 import intro_1, keywords_1, real_1

不能按照您想要的方式工作,因为第二次导入将覆盖第一次。之所以会发生这种情况,是因为在同一个名为intro_1的命名空间中不能有两个不同的变量。

您可以这样做

import übung_1 
import übung_2 

,然后在代码中明确声明所需的名称空间:

print(übung_1.intro_1 + übung_1.keywords_1[number])