NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Lazy computing

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
hanpari
Člen
Avatar
hanpari:22.6.2014 8:08

Ahoj,
narazil jsem na pojem líné počítání, a i když je to asi něco jiného, než ideální přístup k hodinám matematiky, zaujalo mne to a udělal jsem si jednoduchou třídu, abych ho demonstroval.

Otázka je, jestli jsem ten koncept pochopil správně, nebo zda mi něco něco podstatného neuniklo?

Třída Lazy má property count, která vrací součet seznamu _numbers. Výsledek přepočítává jen tehdy, kdy dojde k přidání čísla do seznamu, jinak vrací poslední vypočítaný výsledek.

class Lazy():
    _numbers = []
    _count = None
    def add(self, number):
        self._numbers.append(number)
        self._count = None

    @property
    def count(self):
        if self._count == None:
            print("Přepočítává se...")
            self._count = sum(self._numbers)
        return self._count


l = Lazy()
print(l.count) #Výsledek 0, přepočítaný
>>> Přepočítává se...
>>> 0
l.add(10)
l.add(5)
print(l.count) #Výsledek 15, přepočítaný
>>> Přepočítává se...
>>> 15
print(l.count) #Výsledek 15, nepřepočítaný
>>> 15
Editováno 22.6.2014 8:12
 
Odpovědět
22.6.2014 8:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.