当前位置: 移动技术网 > IT编程>脚本编程>Python > Python的高阶函数和装饰器设计模式

Python的高阶函数和装饰器设计模式

2020年07月03日  | 移动技术网IT编程  | 我要评论
高阶函数:我的理解就是闭包、内嵌函数举例:计数器:有问题么?问题出在base+=step,对base赋值,局部变量,没有先定义改进:声明为非局部变量nonlocal,但是不要是global变量...

高阶函数:我的理解就是闭包、内嵌函数

举例:

计数器:

有问题么?

问题出在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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网