#python
#питон
Вопрос:
Вот идея: я создаю функцию, которая создает переменную и хранит в ней некоторые данные, как бы я это сделал? напр.:
def create_variable(name, data): # code here create_variable("x", "hello world!") print(x) # would return "hello world!"
что — то в этом роде.
кто-нибудь знает, возможно ли это?
Комментарии:
1. Зачем ты это сделал? Просто верните значение и позвольте вызывающему абоненту присвоить его переменной, если он хочет (или напрямую использовать значение каким-либо другим способом, если оно им не нужно в переменной).
2. Верно. Не делай этого. Ты можешь это сделать
x = create_variable(data)
. Если вам действительно нужны динамические переменные, правильный способ — использовать словарь.3. Я согласен с Тимом в использовании словаря
Ответ №1:
Предполагая, что значение переменной является только строкой (в противном случае вы можете добавить дополнительную проверку и синтаксический анализ строк), вы можете использовать exec
с globals()
для запуска строки в качестве кода python для присвоения значения глобальной переменной.
def create_variable(name, data): # code here exec("{}='{}'".format(name, data), globals()) create_variable("x", "hello world!") print(x)
Комментарии:
1. Хотя это технически решает проблему, это УЖАСНАЯ практика кодирования.
exec
Следует избегать как использования, такglobals()
и использования, за исключением особых обстоятельств. Это не один из них.2. Кроме того, если вы уже используете
globals
, вы можете просто выполнить обычное задание элемента dict вместо неправильногоexec
использования .