Найти - Пользователи
Полная версия: Сгенерировать новые переменные
Начало » Python для новичков » Сгенерировать новые переменные
1 2
pythboa
Можно ли в Питоне подставить из строкового формата часть имени объекта?

>>> import sys
a = ‘version’
sys.a # хотелось чтобы сработало как sys.version,

… а оно ессно ругается, говорит нетути такого атрибута :D

Или допустим есть переменная a = ‘foo’, как создать из нее переменную foo = bar?
pythboa
И ещё интересно, можно ли при этом обойтись без создания классов.
gmorgunov
Можно:
>>> cmd = 'import sys; print sys.version'
>>> exec cmd
2.5.1 (r251:54863, Sep 22 2007, 01:43:31)
[GCC 4.2.1 (SUSE Linux)]
или, что то же самое:
>>> a='version'
>>> exec 'import sys; print sys.' + a
pythboa
Стас, я хотел чтобы имя новой переменной бралось из другой переменной

gmorgunov, дада, это оно! Получается, exec - это такой .bat файл внутри Питона, и можно:
a = “foo = ‘bar’”
exec a
и у нас новая переменная foo
ну и много чего ещё,
спасибо! :)
crchemist
pythboa
Можно ли в Питоне подставить из строкового формата часть имени объекта?

>>> import sys
a = ‘version’
sys.a # хотелось чтобы сработало как sys.version,
>>> import sys
>>> a = 'version'
>>> getattr(sys, a)
'2.6 (r26:66714, Jan 23 2009, 00:48:55) \n[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)]'
>>>
crchemist
pythboa
Или допустим есть переменная a = ‘foo’, как создать из нее переменную foo = bar?
>>> a = 'foo'
>>> locals()[a] = 'bar'
>>> foo
'bar'
>>>
crchemist
pythboa
gmorgunov, дада, это оно! Получается, exec - это такой .bat файл внутри Питона, и можно:
то фігня. так не треба робити. exec наскільки я бачив троха в інших місцях використовується
ofigetitelno
:)
Цитата:
locals()
Warning
The contents of this dictionary should not be modified; changes may not affect the values of local variables used by the interpreter.
crchemist
хм. в мене такого не видає. і взагалі ідея створювати змінні таким чином є поганою. А exec використовується для виконання якогось куска коду в певному контексті - по тих прикладах де я бачив
crchemist
можна подивитись як виглядає додавання якигось змінних в globals() в zope.deferredimport.deferredmodule - не знаю наскільки то правильно але воно робоче
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