函数名的应用/列表推导式

函数名的运用:

        1,特殊的变量。

        2,函数名可以当做变量赋值。

        3,函数名可以当做容器类类型的元素。

        4,函数名可以当做函数的参数。

        5,函数名可以当做函数的返回值

    闭包:

        1,内层函数对外层函数的变量(非全局)的引用。

        2,闭包存在于函数中。

        3,闭包要逐层返回,最终返回到函数的最外层。

    特点:

        解释器遇到闭包,不会随着函数的结束而结束空间

    闭包应用:

        装饰器。

        爬虫。

 

    可迭代对象:

        obj

        '__iter__' in dir(obj)

        from collections import Iterable

        isinstance(obj, Iterable)

        可迭代对象不能直接取值,必须转化成迭代器进行取值(__next__)

 

    迭代器:

        '__iter__' in dir(obj) and '__next__' in dir(obj)

         from collections import Iterator

        isinstance(obj, Iterator)

    一个next 对应一个元素

    l1 = [1, 2, 3,]

    obj = iter(l1)

    while True:

        try:

            print(obj.__next__())

        except Exception:

            Break

 

 

 

 

 

 

 

 

 

 

生成器:本质就是迭代器,自己用python代码构建的迭代器。

    1,生成器函数。(yield)

    2,生成器表达式。(i for i in range(100))

    生成器对象:gentor

        next(gentor)

        send(gentor)

        for 循环

    yield 与 return 区别?

 

    send:

        给上一个yield发送一个值

        send 对应yield取值。

 

    next:

        对应一个yield 取值。

 

    yield from 将一个可迭代对象变成一个迭代器返回。

 

    列表推导式:

        循环模式:[变量(加工后的变量) for 变量 in iterable]

        三元模式:['*' if a > b else 变量  for 变量 in iterable]

        筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]

        优点:

            一行代码搞定,简单,高逼格。

        缺点:有毒。不能采用debug模式查错。

    生成器表达式:与上面相同,将[] 换成()

转载于:https://www.cnblogs.com/Lgongzi/p/10252217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值