python中的闭包、装饰器、排序

1、闭包(重要)
匿名函数玩的:将一个函数作为参数进行传递
闭包玩的:将一个函数作为返回值返回
定义:有一个外部函数,外部函数里面有一个内部函数,内部函数使用到了外部函数的局部变量,外部函数将这个内部函数作为返回值返回了,那么这个内部函数就称之为闭包
2、装饰器(重要)
装饰器玩的:将一个函数既作为参数传递又作为返回值返回
装饰:打扮,男生,明星,
到代码中:是用来装饰函数的,是增加了函数的功能
引入装饰器
举了一个例子,就是给函数增加功能,看视频
无参无返回值装饰器
带参数装饰器
(1)被装饰的函数有参数
(2)装饰器里面的闭包也必须有参数
(3)装饰器里面调用fn的时候,也要给他传递参数
带返回值的装饰器
(1)被装饰的函数有返回值
(2)装饰器里面的闭包也必须有返回值
(3)闭包的返回值就是fn函数的返回值
通用装饰器
被装饰的函数,参数可以有好多个
(1)装饰器里面的闭包的形参写为 *args **argv
(2)闭包里面调用fn函数的时候,将args和argv进行拆包
fn(*args, **argv)
3、生成器(重要)、迭代器、可迭代对象
生成器:通过列表生成式生成的一个1-100的列表,这里面所有的元素肯定都已经生成存放到了列表中,有时候你目前用不了这么多,所以生成的100个数据放在这里会占用地方。所以引入了生成器的概念,生成器保存的就是如何生成这个数据,用到的时候只需要调用一下,数据生成了直接用即可
如何产生一个生成器
(1)列表生成式,将中括号改为小括号
(2)使用函数生成,函数要结合yield
当使用next函数执行生成器的时候,就会返回yield后面的值,然后程序就会停在那里,等待下一次的next
使用方式:
(1)使用next函数进行调用, 如果到最后没数据了,使用next会报错
(2)快速的将生成器转化为列表
lt = list(generator)
(3)使用forin进行遍历
【注】生成器只能遍历1次
迭代器(Iterator)
定义:可以使用forin遍历,并且可以使用next函数调用的称之为迭代器
生成器就是一种特殊的迭代器
判断一个对象是不是迭代器,用如下方式进行判断
from collections import Iterator
print(isinstance(lt, Iterator))

    常见的字符串、列表、字典、元组都不是迭代器,他们是可迭代对象
可迭代对象
    定义:可以使用forin进行遍历的就是可迭代对象
    from collections import Iterable
    print(isinstance(lt, Iterable))

    可迭代对象可以转化为迭代器
        l = iter(lt)

4、排序
选择排序
冒泡排序
官方自带的排序函数

猜你喜欢

转载自blog.csdn.net/zangshuge/article/details/81664782