Хотя вы можете создавать переменные с произвольными именами во время выполнения, используя exec
(как предложил sykora) или вмешиваясь с locals
, globals
или setattr
для объектов, ваш вопрос несколько спорен.
Объект (почти все, от целых чисел до классов с 1000 членами) - это просто кусок памяти. У него нет a имени, оно может иметь произвольное количество имен, и все имена обрабатываются как равные: они просто вводят ссылку на некоторый объект и предотвращают его сбор.
Если вы хотите присвоить элементам имена в том смысле, что пользователь вашей программы присваивает объекту видимое имя, вы должны использовать словарь для связанных объектов с именами.
Ваш подход к предоставленным пользователем именам переменных имеет несколько других серьезных последствий:
Что делать, если пользователь вводит имя существующей переменной?
* что если пользователь введет неверное имя?
Вы вводите неплотную абстракцию , поэтому, если для цели вашей программы не очень важно, чтобы пользователь мог указать новое имя переменной, ему не нужно беспокоиться о том, как Вы храните свои объекты - и вам не будут предъявляться, казалось бы, странные ограничения.