TI/Skrypty z zajęć/k8
Z Brain-wiki
# -*- coding: utf-8 -*-
"""
Created on Wed Jun 3 11:09:18 2020
@author: Tomek
"""
def dodajAutora(fun):
fun.autor = 'Tomasz Gubiec'
return fun
def opiszWykonanie(fun):
def f(*args,**kwargs):
print('Poczatek wykonania funkcji',fun.__name__, 'dla argumentow', args, kwargs)
value = fun(*args,**kwargs)
print('Koniec wykonania funkcji',fun.__name__, 'dla argumentow', args, kwargs)
print(' a otrzymany wynik to', value)
return value
return f
class dodajAutora2():
def __init__(self,fun):
self.__fun = fun
@property
def autor(self):
return 'Tomasz Gubiec'
def __call__(self, *args, **kwargs):
return self.__fun(*args, **kwargs)
class memoize():
def __init__(self,fun):
self.__fun = fun
self.__memo = {}
def __call__(self, *args):
if args in self.__memo:
print('to juz kiedys bylo liczone')
return self.__memo[args]
else:
value = self.__fun(*args)
self.__memo[args] = value
return value
@memoize #kwadratowa = dodajAutora(kwadratowa)
def kwadratowa(x):
return x*x
@memoize #liniowa = dodajAutora(liniowa)
def liniowa(x):
return 2*x + 3
@dodajAutora
@memoize
def fibo(n):
if (n == 1) or (n == 2): return 1
return fibo(n-1) + fibo(n-2)
#a = [kwadratowa(i) for i in range(100)]