Python: как вызвать функцию в другом файле с циклическим импортом

Я делаю текстовую напольную игру для учебных целей. Я хочу, чтобы все функции перемещения были в отдельном файле Python, но у меня возникли проблемы с их совместной работой.

У меня основная игра называется floors.py и файл карты floormap.py,

Я могу импортировать и запускать функции из floormap.py Внутри floors.py отлично хорошо

Но я не знаю, как вернуться к floors.pyфункции после запуска floormap.py функции. Вот пример ниже. Когда я запускаю это, я получаю следующую ошибку в терминале:

NameError: global name 'first_hall_1' is not defined

Я получил это работает с помощью:

from floormap import first_hall_1

Но я мог бы найти способ заставить функции снова вызываться в исходном файле.

Floors.py:

import floormap

def first_hall_object():
    grab = raw_input("Enter Command > ")

    backward = ['back', 'Back', 'Backward', 'backward']

    if any (s in grab for s in backward): 
        first_hall_1()

def walkin_hall():
    print "whatever"

floormap.py:

import floors 

def first_hall_1():
    print "You are in front of the door again. It is locked."
    walkin_hall()

1 ответ

Решение

Вы должны пройти отбор first_hall_1 с именем модуля floormap,

def first_hall_object():
    grab = raw_input("Enter Command > ")

    backward = ['back', 'Back', 'Backward', 'backward']

    if any (s in grab for s in backward): 
        floormap.first_hall_1()  # <-----

То же самое для walkin_hall() вызов:

def first_hall_1():
    print "You are in front of the door again. It is locked."
    floors.walkin_hall()
Другие вопросы по тегам