Найти - Пользователи
Полная версия: Создание переменных по маске.
Начало » Python для новичков » Создание переменных по маске.
1
Bambay
В программировании, понятное дело, нуб.
Недавно возник вопрос: Можно ли как то создавать по заданной маске и тут же определять переменные с помощью циклов while или for, чтобы на выходе получалось что-то вроде:

x1=1
x2=2
x3=3
x4=4

x10=10
То есть, переменные создаются внутри цикла.
Заранее спасибо за помощь.
fata1ex
Для этого существуют коллекции. Например, списки.

Но если нечего делать, то, конечно, можно написать:
>>> for idx in xrange(10):
...     exec('x{0} = {1}'.format(idx, idx + 1))
...     
... 
>>> x0
1
>>> x2
3
Bambay
fata1ex
Оператор “exec” интерпретирует строку и выполняет ее? Я искал его в стандартной библиотеке и не нашел.
fata1ex
Ещё раз говорю: этим пользоваться нельзя. Так не пишут.
Динамическая интерпретация нужна крайне редко, и это, определённо, не тот случай. Опишите вашу задачу, её наверняка можно решить по-другому.

http://docs.python.org/reference/simple_stmts.html#exec
Bambay
Задачи нет, я просто удовлетворил свое любопытство. Спасибо за помощь!
fata1ex
Ок. Тогда я спокоен :)
EBFE
exec == evil
>>> vars().update([('x{idx}'.format(idx=i), i) for i in range(10)])
>>> x0
0
>>> x3
3
>>> locals().update([('y{idx}'.format(idx=i), i) for i in range(10)])
>>> y3
3
>>> y9
9
>>> import sys
>>> myself = sys.modules[__name__]
>>> for i in range(10):
...   setattr(myself, 'z' + str(i), i)
...
>>> z7
7
fata1ex
Насчет locals я еще подумал, а вот до первого и третьего варианта моё сознание не добралось. Чему я очень рад :)

Как говорится, вы знаете толк.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB