Символы не являются заменой для строк.Хотя оба представлены последовательностью символов, символ не должен использоваться вместо строки, если это свойство является доминирующим.Символы представляют собой уникальную личность.Это означает, что для их сравнения можно использовать равенство указателей (а не равенство содержимого).По этой причине символы часто используются в качестве констант, элементов перечисления, ключей или идентификаторов хеш-таблицы (в lisp).
В Лиспе, когда вы впервые ссылаетесь на символ, создается соответствующая запись в таблице символов.Если после этого на этот символ будет ссылаться, он будет найден и будет представлять то же значение.
Я не программист на Python, но поскольку символы не встроены в язык Python, их использование может быть ограниченоне очень удобно.Вы не должны использовать их для изоляции строк.Для этого используйте класс-оболочку.
Редактировать: читая документы SymbolType, я увидел, что они связывают исходное пространство имен (через __name__
).Common Lisp тоже это делает.Можно было бы использовать это средство каким-то образом.
Также прочитайте этот вопрос .