Как я могу сгенерировать имя переменной из строки (например, конкатенация буквы и числа)?Эквивалент «genvarname» в Python
В Matlab, эта задача может быть легко сделано с помощью genvarname
Как я могу сгенерировать имя переменной из строки (например, конкатенация буквы и числа)?Эквивалент «genvarname» в Python
В Matlab, эта задача может быть легко сделано с помощью genvarname
Вот действительно плохой путь (неопределенное поведение), но я думаю, что он показывает путь к более разумным способом.
Ваше текущее пространство имен действительно словарь под одеялом:
>>> local_namespace = locals()
>>> name = "myVarName"
>>> local_namespace[name] = 'VarData'
>>> myVarName
'VarData'
Но это не очень DRY - вы должны написать имя переменной в два раза! Было бы хорошо, чтобы использовать переменную, которая хранится имя нашего динамически созданной переменной, поэтому мы не должны ввести его дважды:
>>> name
'myVarName'
явно не работает для этого. Но мы снова можем использовать наш словарь:
>>> local_namespace[name]
'VarData'
Итак, теперь мы можем сохранить и вспомнить значение, связанное с нашей переменной. Но подождите - нет необходимости использовать специальный словарь locals()
для этого - обычный словарь сделает!
>>> d = {}
>>> d[name] = 'VarData'
>>> d[name]
'VarData'
И теперь у нас есть все эти дополнительные преимущества, как возможность отслеживать имена некоторых из этих переменных в списке:
>>> l = []
>>> l.append('myVarName')
>>> l.append('anotherVarName')
Словари даже сделать это для нас:
>>> d['anotherVarName'] = 123
>>> d.keys()
['myVarName', 'anotherVarName']
Если вы не делаете ужасно сумасшедшие вещи, трудно представить, как конструктивные имена переменных могут быть более полезными, чем использование словаря.
Вы можете использовать exec("")
.
Но вы действительно (!!!) не хотят.
>>> name="myVarName"
>>> exec(name+"='VarData'")
>>> myVarName
'VarData'
Вы также можете добавить его вручную в свой объем, но вы действительно не хотите этого делать. – Hyperboreus
Умм я вроде надеюсь, что нет: p Это грязно! Вам это абсолютно необходимо? – Roberto
сохраните свои данные из ваших имен переменных. Используйте 'dict' или * возможно *' getattr', в зависимости от ситуации. – roippi
Посмотрите, подходит ли эта ветка: http://stackoverflow.com/questions/1373164/how-do-i-do-variable-variables-in-python содержит комментарии о 'getattr',' exec', 'eval 'и почему на самом деле лучше использовать словари :) – Roberto