python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
2017-01-29 09:20
1181 查看
python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
def memo(func): cache = {} def wrapper(*args): if args not in cache: cache[args] = func(*args) return cache[args] return wrapper
def memo(func): cache = {} def wrapper(*args): if args not in cache: cache[args] = func(*args) return cache[args] return wrapper
@memo
def fibonacci(n):
if n <= 1:
return 1
return fibonacci(n - 1) + fibonacci(n - 2)
def fibonacci2(n,cache = None):
if cache is None:
cache = {}
if n in cache:
return cache
if n <= 1:
return 1
cache
= fibonacci2(n - 1,cache) + fibonacci2(n - 2,cache)
return cache
==>一个共有10个台阶的楼梯,从下面走到上面,一次只能迈1,2,3个台阶
==> 并且不能后退,走完这个楼梯共有多少中方法
def climb(n,steps):
count = 0
if n == 0:
count = 1
elif n >0:
for step in steps:
count += climb(n-step,steps)
return count
print fibonacci2(5)
print fibonacci(50)
fibonacci = memo(fibonacci)
print fibonacci(50)
print climb(10,(1,2,3))
相关文章推荐
- Python 练习册,每天一个小程序----------001使用 Python 如何生成多位随机数
- 如何使用不同参数组合生成独立的TestCase函数(Python)
- Python3基础 生成一个可以使用for循环可迭代的类,具有__iter__和__next__的方法的类
- eclipse 中main()函数中的String[] args如何使用?通过String[] args验证账号密码的登录类?静态的主方法怎样才能调用非static的方法——通过生成对象?在类中制作一个方法——能够修改对象的属性值?
- 添加一个文件夹及一些文件如何使用git生成patch git补丁 新文件 图片资源文件
- 添加一个文件夹及一些文件如何使用git生成patch
- 学python(03)—— 如何使用函数实现一个随机字符串里的大小写字符互换
- 添加一个文件夹及一些文件如何使用git生成patch
- 如何用python的装饰器定义一个像C++一样的强类型函数
- python 9-2 如何为被装饰的函数保存元数据,使用标准库functools中的装饰器wraps 装饰内部包裹函数
- 添加一个文件夹及一些文件如何使用git生成patch
- python之 装饰器(原函数有返回值,装饰器函数如何拿到原函数返回值?)
- Python中如何避免使用多个分支语句(多个if和else)——函数字典(Function Map)简介
- java中如何使用asm动态的生成或修改一个class文件以及asm的架构思想
- 如何使用Cocos2D 2.X生成一个简单的iPhone游戏
- 如何使用Python为Hadoop编写一个简单的MapReduce程序
- python 装饰器功能以及函数参数使用
- 如何使用 asp.net 4.0 新特性 路由功能 有助于seo优化 给一个 asp.net web项目(网站项目) 增加路由功能 ,继承,给根据路由生成的url的结尾,增加一个有利于seo优化的斜杠 /,跳转到一个路由生成的url页面
- 如何使用Maven的archetype快速生成一个新项目
- 牛腩购物18 : 添加商品页面2 。泛型List<T>的使用,linq 的使用, 如何在 DropDownList 里面绑定二级分类(运用linq),fileupload和图片控件的配合使用用来上传图片,try catch