嘿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))
我希望给出具体询问文件的内容,而不是最新文件中的可变内容。
遗憾的是,我尚未找到针对此特定问题的解决方案,希望有人能帮助我向正确的方向指正。 预先非常感谢。
答案 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])