Лучший способ, по моему предвзятому мнению, состоит в том, чтобы обернуть словарь в красивый объект, где «переменные» доступны как атрибуты - шаблон, который я назвал Bunch , когда я представил его много лет назад,и отличный пример последнего элемента в Zen of Python (если вы не знаете, что это такое, import this
в интерактивной подсказке переводчика).То есть ...:
class Bunch(object):
def __init__(self, d=None):
if d is not None: self.__dict__.update(d)
def myfunc():
a = 4.2
b = 5.5
...
return Bunch(locals())
x = myfunc()
print x.a, x.b
Использование квалифицированных имен , таких как x.a
и x.b
, вместо имен , таких как a
и b
, здесь ключевая идея: квалифицированные имена позволяют вам разделять пространства имен и правильно обращаться с ними, в то время как голые имена могут составить один большой суп из всего и нарушить Zen of Python ;-).И, конечно, нет необходимости использовать развернутый дикт и неприглядные x['a'], x['b']
доступы! -)