python variáveis variáveis? ou, computação cara e atrasada

Eu tenho um conjunto de matrizes muito grandes e caras para calcular, e nem todas serão necessariamente necessárias para o meu código em uma determinada execução. Gostaria de tornar a declaração opcional, mas idealmente sem precisar reescrever todo o meu código.

Exemplo de como é agora:

x = function_that_generates_huge_array_slowly(0)
y = function_that_generates_huge_array_slowly(1)

Exemplo do que eu gostaria de fazer:

x = lambda: function_that_generates_huge_array_slowly(0)
y = lambda: function_that_generates_huge_array_slowly(1)
z = x * 5 # this doesn't work because lambda is a function
      # is there something that would make this line behave like
      # z = x() * 5?
g = x * 6

Enquanto o uso do lambda como acima alcança um dos efeitos desejados - o cálculo da matriz é adiado até que seja necessário - se você usar a variável "x" mais de uma vez, ela deve ser calculada a cada vez. Eu gostaria de calcular apenas uma vez.

EDIT: após algumas pesquisas adicionais, parece possível fazer o que eu quero (aproximadamente) com atributos "preguiçosos" em uma classe (por exemplo,http: //code.activestate.com/recipes/131495-lazy-attributes). Suponho que não haja maneira de fazer algo semelhante sem fazer uma aula separad

EDIT2: Estou tentando implementar algumas das soluções, mas estou enfrentando um problema porque não entendo a diferença entre:

class sample(object):
    def __init__(self):
        class one(object):
            def __get__(self, obj, type=None):
                print "computing ..."
                obj.one = 1
                return 1
        self.one = one()

class sample(object):
    class one(object):
        def __get__(self, obj, type=None):
            print "computing ... "
            obj.one = 1
            return 1
    one = one()

Acho que é uma variação disso que estou procurando, uma vez que as variáveis caras devem fazer parte de uma class

questionAnswers(5)

yourAnswerToTheQuestion