У меня проблемы с функциями 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...
----> 1
, все ошибки NameErrors указывают на строку 1. - person Sir Face   schedule 29.12.2020