Python入门篇-高阶函数

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.高级函数 

1>.First Class Object

    函数在Python中是一等公民
    函数也是对象,可调用的对象
    函数可以作为普通变量,参数,返回值等等

2>.高阶函数

    数学概念:y=g(f(x))
    在数学和计算机科学中,高阶函数应当是至少满足下面一条条件的函数
        接收一个或多个函数作为参数
        输出一个函数对象

3>.计数器

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 def counter(base):
 8     def inc(step=1):
 9         nonlocal base       #这里声明base不在inc作用域内(是counter内部作用域中的一个变量),当腰使用base可以去它上级作用域查找,但是不能去全局作用域查找哟~
10         base += step
11         return base
12     return inc
13 
14 f1 = counter(5)
15 
16 f2 = counter(5)
17 
18 print("id(f1) = {} ,id(f2) = {} ,{}".format(id(f1),id(f2),f1 == f2))
19 
20 print("f1() = {}".format(f1()))
21 print("f2() = {}".format(f2()))
22 
23 
24 
25 #以上代码执行结果如下:
26 id(f1) = 42081272 ,id(f2) = 42081408 ,False
27 f1() = 6
28 f2() = 6

 

二.自定义sort函数

1>.排序问题

排序问题:
  仿照内奸函数sorted,请自行实现一个sort函数(不使用内建函数)

思路:
  内建函数sorted函数是返回一个新的列表,可以设置升序或降序,可以设置一个排序的函数。内自定义sort函数也要实现这个功能。
  新建一个列表,遍历原列表,和新列表的值依次比较决定如何插入到新列表中。  
思考:
  sorted函数的实现原理,扩展到map,filter函数的实现原理。

2>.sort函数实现

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:y1053419035@qq.com
 6 
 7 def sort(iterable,reverse = False):
 8     list_1 = []
 9     for x in iterable:
10         for index, y in enumerate(list_1):
11             flag = x > y if reverse else x < y
12             if flag:                        # 找到大的就地插入。如果换成x < y呢,函数什么意思呢?
13                 list_1.insert(index,x)      # 降序
14                 break
15         else:                               # 不大于,说明是最小的,尾部追加
16                 list_1.append(x)
17     return list_1
18 
19 src = [1,2,5,4,2,3,5,6]
20 
21 dest = sort(src)
22 
23 print("src = {}".format(src))
24 print("dest = {}".format(dest))
25 print("dest = {}".format(sort(src,False)))
26 print("dest = {}".format(sort(src,True)))
27 
28 
29 
30 #以上代码执行结果如下:
31 src = [1, 2, 5, 4, 2, 3, 5, 6]
32 dest = [1, 2, 2, 3, 4, 5, 5, 6]
33 dest = [1, 2, 2, 3, 4, 5, 5, 6]
34 dest = [6, 5, 5, 4, 3, 2, 2, 1]
版本一

相关文章: