2013-11-15 7 views
0

У меня есть этот код:Как автоматизировать создание переменных?

lst = [name_1, name_2, name_3, name_4, name_5, name_6, name_7] 

for i in lst: 
    i = class.function(argument) 

Я хотел бы использовать имена в списке в качестве имен переменных и таким образом создать новые переменные, позволяя машине делать тяжелую работу. Но вместо этого я получаю следующее: NameError: name 'name_1' не определен. Что я делаю неправильно? Возможно ли это?

+3

Динамические переменные считаются очень плохая практика кодирования. Вы действительно никогда не хотите их использовать. – iCodez

+1

Возможно, это может сделать ваш код более читаемым или, по крайней мере, менее повторяющимся. Но искажения, которые вам нужно пройти, чтобы заставить его работать, делают ваш код намного менее понятным. Используйте 'dict'. – chepner

+0

@iCodez Спасибо за информацию. – squarrel

ответ

1

Я не konw, если я получаю свой вопрос. Вы хотите знать, как назначать имена переменных динамически? Это одно решение, использование питона «Exec()»

в целом это, как мы определяем переменную:

a=3 

в этом коде мы знаем имя переменной, когда мы пишем код. Но что, если мы не узнаем его имя до запуска скрипта? Мы могли бы использовать EXEC

var_name = ["a","b","c"] 
var_value = [3,4,5] 
for name,value in zip(var_name,var_value): 
    exec("%s=%d" % (name,value)) 
print a,b,c 

выход: 3,4,5

+0

Да, хотелось бы знать, как динамически назначать переменные. – squarrel

4

Вы можете попробовать использовать словарь:

dict1 = {"name_1" : object here, "name_2" : object here} 

Итак, когда вы хотите использовать эту переменную:

dict1["name_1"].someFunction(...) 
+1

Это официальное благословение OneTrueWay. –

+0

Это полезно. – squarrel

Смежные вопросы