NameError возникает для всех ссылок на аргументы внутри функций

У меня проблемы с функциями python - NameErrors возникает каждый раз, когда я ссылаюсь на аргумент. Я тестировал этот код отдельно онлайн, и никаких ошибок не возникало.

См. Приведенный ниже код, я включил начальный раздел моей функции (продолжается примерно 350 строк). Несмотря на то, что FirstRoomObject и SecondRoomObject установлены в качестве аргументов функции, ссылки на них внутри функции постоянно вызывают ошибки NameErrors.

from difflib import SequenceMatcher

# SEQUENCEMATCHER FUNCTION
def similar(a, b):
    return SequenceMatcher(None, a, b).ratio()


# ROOM SIMILARITY CHECK FUNCTION

def RoomSimilarityCheck(FirstRoomObject, SecondRoomObject):
    
    # FIRST ROOM:
    print("ROOM 1: " + FirstRoomObject.Room_Name)
    
    # SECOND ROOM:
    print("ROOM 2: " + SecondRoomObject.Room_Name)
    
    
    # SIMILARITY CHECKS:
    
    # 2.1.1) Room_Name SIMILARITY
    print("Similarity Check 1: Room Name")
    RoomNameSimilarity = similar(FirstRoomObject.Room_Name, SecondRoomObject.Room_Name)
    print("Room Name Similarity: " + str(RoomNameSimilarity))
    
    
    #function continues to infinity and beyond...

Помимо первой ссылки, каждый раз, когда я ссылаюсь на аргумент внутри моей функции, возникает ошибка NameError, как показано ниже:

In [31]: ---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-31-3a51da71f31f> in <module>
----> 1 print("ROOM 2: " + SecondRoomObject.Room_Name)

NameError: name 'SecondRoomObject' is not defined

К вашему сведению: эта проблема возникает даже для самых основных функций.

В случае, если это может быть актуально, некоторый контекст:

  • Python 3.6.8
  • Виртуальная среда Conda
  • Выполнение в Anaconda Prompt

При написании этой программы мне пришлось полностью избегать функций ...

Редактировать с ответом:

Наконец-то я нашел ответ на свою проблему по следующей ссылке: Правило пустой строки в интерактивном запросе.

Пустые строки в моей функции нарушали код при запуске в интерактивной консоли. Синтаксис «несовместим между интерпретируемым и пакетным режимами», запуск моего скрипта в оболочке вызывал проблему: python manage.py shell ‹pages \ datafusion.py

Чтобы решить эту проблему, мне нужно будет хешировать каждую пустую строку в функции, см. Обновленный код ниже:

# ROOM SIMILARITY CHECK FUNCTION

def RoomSimilarityCheck(FirstRoomObject, SecondRoomObject):
    #
    # FIRST ROOM:
    print("ROOM 1: " + FirstRoomObject.Room_Name)
    #
    # SECOND ROOM:
    print("ROOM 2: " + SecondRoomObject.Room_Name)
    #
    #
    # SIMILARITY CHECKS:
    #
    # 2.1.1) Room_Name SIMILARITY
    print("Similarity Check 1: Room Name")
    RoomNameSimilarity = similar(FirstRoomObject.Room_Name, SecondRoomObject.Room_Name)
    print("Room Name Similarity: " + str(RoomNameSimilarity))
    #
    #
    #function continues to infinity and beyond...

person Sir Face    schedule 29.12.2020    source источник
comment
Будет полезно, если вы создадите минимально воспроизводимый пример.   -  person khelwood    schedule 29.12.2020
comment
Предоставленный вами код не вызовет эту ошибку. Обратите внимание: он указывает на строку 1, что не соответствует предоставленному вами коду.   -  person juanpa.arrivillaga    schedule 29.12.2020
comment
Код, который я предоставил, вызывает эту ошибку, даже если остальная часть функции не включена. Я удалил пробелы только при добавлении кода в свой ответ. Я пробовал изолировать код и запускать его в отдельном файле - все еще вызывает те же ошибки NameErrors. Поскольку ошибки не вызваны самим кодом, я пытаюсь выяснить, какая часть моих настроек может подрывать мою программу. С другой стороны, если, «указывая на строку 1», вы имеете в виду ----> 1, все ошибки NameErrors указывают на строку 1.   -  person Sir Face    schedule 29.12.2020
comment
Я добавил частичный минимально воспроизводимый пример (объекты базы данных не были включены). Однако это почти наверняка проблема моей среды, а не самого кода.   -  person Sir Face    schedule 29.12.2020
comment
Удаление пробелов может иметь значение, когда код работает, а код не работает в Python. Пожалуйста, воспроизведите здесь код точно в том виде, в котором вы его запускаете, и он выдает ошибку.   -  person mkrieger1    schedule 29.12.2020
comment
Вы уверены, что эта строка кода имеет правильный отступ, поэтому она считается частью функции?   -  person John Gordon    schedule 29.12.2020