Рекомендуемый ответ должен быть "использовать словарь", но если у вас есть , чтобы сделать это таким образом:
class cls(object):
pass
a = "<a>"
b = "<b>"
c = ["", "", "<c>"]
d = cls()
d.s = "<d.s>"
e = cls()
e.s = "<e.s>"
var_list = "a b c[2:7] d.s e.s".split()
for var in var_list:
exec "%s+='Mod'" % var # Modify the variables
print a,b,c,d.s,e.s
# >>> <a>Mod <b>Mod ['', '', '<c>', 'M', 'o', 'd'] <d.s>Mod <e.s>Mod
IIRC этот способ не работает в Python 3.0, потому чтовнутренних оптимизаций
С ломтиками это должно быть примерно так:
import re
class cls(object):
pass
def fn(var): # function to apply to the strings
return "[%s mod]" % var
a = "<a>"
b = "<b>"
c = "01234567890"
d = cls()
d.s = "<d.s>"
e = cls()
e.s = "<e.s>"
var_list = "a b c[2:7] d.s e.s".split()
for var in var_list:
# Modify the variables
try:
# exec "%s='Hi there'" % var # Modify the variables
exec "%(var)s=fn(%(var)s)" % { "var": var }
except TypeError:
# Assume Slice...
slice_ = re.findall("\[(\d+)\:(\d+)\]", var)[0] # Get slice
var_with_slice = var
var = var.split("[")[0] # Remove slice
# Look ma, I can code in Perl too! :)
line = \
"%(var)s=%(var)s[:%(slice1)s]+fn(%(var_with_slice)s)+%(var)s[%(slice2)s+1:]" % \
{ "var": var, "var_with_slice": var_with_slice, "slice1": slice_[0], "slice2": slice_[1] }
# somewhat like c = c[:2] + fn(c[2:7]) + c[7+1:]
exec line
print a,b,c,d.s,e.s
# >>> [<a> mod] [<b> mod] 01[23456 mod]890 [<d.s> mod] [<e.s> mod]