Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Как динамически создать переменную, в названии которой может содержаться значение другой переменной?

#python


Нужно создать переменную следующим образом (псевдокод):

Имя_%номер-пользователя% = значение


Как такое сделать?
    


Ответы

Ответ 1



В дополнение к существующему ответу. Динамическое создание переменных сложно поддерживать. И это может быть не безопасно. Вы можете использовать словари. Словари - это хранилища ключей и значений. >>> dct = {'x': 1, 'y': 2, 'z': 3} >>> dct {'y': 2, 'x': 1, 'z': 3} >>> dct["y"] Можно так же использовать имена ключей как переменные >>> x = "spam" >>> z = {x: "eggs"} >>> z["spam"] 'eggs' Для случаев, когда вы думаете о чем-то вроде var1 = 'foo' var2 = 'bar' var3 = 'baz' ... список может быть более подходящим, чем словарь. Список - упорядоченная последовательность объектов с целочисленными индексами: l = ['foo', 'bar', 'baz'] print(l[1]) # prints bar, because indices start at 0 l.append('potatoes') # l is now ['foo', 'bar', 'baz', 'potatoes'] Списки могут быть более удобны, чем словари с целыми ключами. Например добавлять и удалять элементы так удобнее.

Ответ 2



Например, так: import os uid = os.getuid() print(uid) # 1000 try: print(name_1000) except NameError as e: print(e) # name 'name_1000' is not defined locals()[f'name_{uid}'] = 42 print(name_1000) # 42 Но надо помнить, что динамическое создание переменных - это очень плохая практика. Скорее всего, задуманное надо реализовывать через ассоциативные структуры данных (словарь, например). В зависимости от задачи, переменная может быть создана не только в локальной, но и в глобальной области видимости с использованием функции globals.

Комментариев нет:

Отправить комментарий