Python的高阶函数和装饰器设计模式
高阶函数:我的理解就是闭包、内嵌函数
举例:
计数器:
有问题么?
问题出在base+=step,对base赋值,局部变量,没有先定义
改进:声明为非局部变量nonlocal,但是不要是global变量
观察一下:
id(f1)
id(f2)
f1==f2
自定义sort函数:
以下是加入reverse参数的改进:推荐flag的用法
改写为高阶函数,注意comp函数:
comp函数比较通用。可以抽象出来。如下:
再改写成高阶函数形式:
先简化一下comp函数,使其不带reverse参数:
替换成sort自己的调用:
再进一步改造comp函数为匿名函数lambda a,b:a<b
再改造一下,去掉reverse参数吗,由匿名函数比较关系决定升序还是降序
知识点补充:enumerate、集合set操作
>>> import random
>>> l=[random.randint(1,100) for i in range(5)]
>>> l
[10, 14, 62, 30, 45]
>>> print(list(enumerate(l)))
[(0, 10), (1, 14), (2, 62), (3, 30), (4, 45)]
>>> for e in enumerate(l):
print(e[0])
0
1
2
3
4
>>> for i,x in enumerate(l):
print(i,' ',x)
0 10
1 14
2 62
3 30
4 45
>>> k=set(l)
>>> k
{10, 45, 14, 30, 62}
| add(...)
| Add an element to a set.
|
| This has no effect if the element is already present.
|
| clear(...)
| Remove all elements from this set.
|
| copy(...)
| Return a shallow copy of a set.
|
| difference(...)
| Return the difference of two or more sets as a new set.
本文地址:https://blog.csdn.net/lm19770429/article/details/107057500