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)    收藏  举报

导航