Последний импортированный файл перезаписывает операторы из предыдущих файлов.Лучше способы указания импортируемых переменных? - PullRequest
1 голос
/ 15 апреля 2019

Привет, сообщество 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 ]

2 голосов
/ 15 апреля 2019

Может быть проще импортировать модули следующим образом:

import übung_1
import übung_2

См. Содержимое übung_1.intro_1, übung_2.intro_1, übung_1.keywords_1 и т. Д.

1 голос
/ 15 апреля 2019

Как вы указали, эти две строки

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])
...