Здравствуйте, Буравчик, Вы писали:
Б>Что, намного становится хуже с globals?
Не я писал этот код, поэтому сказать, насколько хуже, — не знаю. Но мотивация была именно такая.
Хотя... я знаю, как пофиксить.
Напишу каскадный словарь.
Что-то в духе
class SuperGlobals:
def __init__(self, g, l):
self.g, self.l = g, l
def __getitem__(self, k):
return self.l[k] if k in self.l else self.g[k]
def __contains__(self, k):
return k in self.l or k in self.g
ну или буду профилировать и смотреть, насколько страшен чёрт, если делать
g = copy.copy(dedicated_globals())
l = dedicated_locals()
g.update(l)
eval(....., g, None)