Python开发【第五篇】:杂货
1.排序
2.装饰器
一.排序
方法1:挨个比较,并提取最大元素到新列表
a =[1,4,5,8,2,5,33,44,21]
b = []
for i in range(1,len(a)):
k = 0
for j in range(0,len(a)):
if a[j]>k:
k = a[j]
b.append(k)
for x in range(0,len(a)):
if a[x] == k:
del (a[x])
break
b.append(a[0])
print(b)
方法2:挨个比较,并交换位置
a =[1,4,5,8,2,5,33,44,21]
for j in range(1,len(a)):
for i in range(0,len(a)-1):
if a[i]>a[i+1]:
temp = a[i+1]
a[i+1] = a[i]
a[i] = temp
print(a)
二.递归
函数自己调用自己:
递归思想的核心,是参数递归,可以直接创建新数据
而取名思想中的索引,是需要先创建名称来代指数据的
斐波那契数列
def f1(a1,a2):
if a1>1000:
return
print(a1)
f1(a2,a1+a2)
f1(0,1)
三、装饰器
不改变函数,而增加功能。
在函数执行前或之后,进行操作。
创建
无参数
def outer(func):
def inner():
print('aaa')
print('bbb')
r = func()
print('ccc')
print('ddd')
return r
return inner
应用
@outer
def f1():
print('kkk')
#作用:
1,用值:::使用f1函数作为outer函数的参数,构建将return出的新函数。 注意作为参数传入相当于新建副本,不会陷入死递归
2,赋值:::outer的return出的新的函数赋回给f1
类比变量:先从变量中取出变量值,进行某种计算后传给另一个变量,再把另一个变量值赋回给本变量。
把【
@outer
def f1():
print('kkk')
】
进行操作变成了【
def f1():
新的函数体
】
有参数
def outer(func):
def inner(a,b):
print('aaa')
print('bbb')
r = func(a,b)
print('ccc')
print('ddd')
return r
return inner
@outer
def f1(x,y):
return x + y
万能
无论有无参数
无论参数几个
def outer(func):
def inner(*args,**kwargs):
print('sf')
r = func(*args,**kwargs)
return r
return inner
补充
这样也可以达到装饰器的效果 运用了 多静代一静思想
无参数版本
def f1():
print('j')
f3 =f1
def f2():
f3()
print('jkk')
f1 = f2
f1()
万能参数版本
def f1(a,b)
f3 = f1
def f2(*args,**kwargs):
print('kk')
f1(*args,**kwargs)
posted on 2016-11-05 17:41 limpidstar 阅读(82) 评论(0) 收藏 举报
浙公网安备 33010602011771号