2018.3.14学习笔记(冒泡、递归、装饰器)
2018-03-14 14:14 冒牌权限 阅读(76) 评论(0) 收藏 举报冒泡排序
#!/usr/bin/env python # -*- coding:utf-8 -*- li = [156,6354,454,1548,1541,5,64,2485,64] for y in range(1,len(li)): for i in range(len(li)-y): tmp = li[i] if li[i] > li[i+1]: li[i] = li[i+1] li[i+1] = tmp print(li)
递归
#!/usr/bin/env python # -*- coding:utf-8 -*- #用递归输出斐波那契数列第10个数 #斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... def func(a1,a2,n): print(n)#查看第几次执行func() a3 = a1 + a2 if n == 8:#因为第1次执行就能拿到第3个数,所以拿到第10个数应该只要执行8次 return a3 n += 1#为下一次执行准备 re = func(a2,a3,n) return re print(func(1,1,1))
装饰器
#!/usr/bin/env python # -*- coding:utf-8 -*- #python里边@的特殊功能 #1、执行outer函数,并将其下的函数名当做参数 #2、将outer的返回值重新赋值给func = outer的返回值 #3、如此一来相当于有了一个新的func函数inner #装饰器的本质就好比将一个函数封装到另外一个函数里 def outer(c_func): def inner():#新的func print('hehe') print('hehe') ret = c_func()#参数c_func就是执行@outer时outer下的函数名func print('fuck') print('fuck') return ret#可以看到func无返回值 return inner#把inner返回给func,所以外部调用,直接调用func就可以 @outer#outer(func()) def func(): print('func') func()
带多个参数的装饰器
#!/usr/bin/env python # -*- coding:utf-8 -*- def outer(c_func): def inner(*args,**kwargs): print('hehe') print('hehe') ret = c_func(*args,**kwargs) print(ret)#这句没什么卵用,只是验证一下c_func执行完了没有 print('fuck') print('fuck') return ret return inner @outer#outer(func()) def func(a1,a2): return a1 + a2 @outer def hunc(b1,b2,b3,b4): return b1 - b2 +b3 - b4 func(1,2) print('=======================') hunc(8,7,6,5)
浙公网安备 33010602011771号