2021/6/14 魔术方法、可迭代对象、异常处理

2021/6/14 10:51:06

本文主要是介绍2021/6/14 魔术方法、可迭代对象、异常处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

'''
异常处理
    try:
    except:
    finally:
    with:
    raise

可迭代对象
        只要重写了__iter__方法,就是一个可迭代对象
    迭代器:
        迭代器就是用来迭代取值的,对于序列类型,我们可以使用序号来进行跌打取值
        对于非序列类型,我们需要一种不依赖序号的方式来进行迭代取值,因此使用迭代器
        迭代器统一了迭代取值的方式
        迭代的目的就是不断逼近目标值
    class xxx:
        def __iter__():
            return self
    for in 方法就是调用对象的__iter__方法,获取一个可迭代对象,然后不停调用该对象的next方法
    停止迭代器:
        raise
    迭代器的优缺点:
        优点:
            统一了迭代取值的方式
            惰性计算:对于迭代器对象,他表示的是一个数据流,同一时间内,再内存中只会存在一个
            值,只有再需要的时候,再调用next方法来迭代取值
            而对于列表等容器类型,他们再内存中是直接存入所有元素,容器类型的大小、元素个数
            受内存大小限制
        缺点:
            1. 迭代器的目的就是不断的逼近目标值,所以迭代器只能向前取,不能后退
            2. 迭代器对象的迭代没有完成,就永远不知道其长度
            3. 对于同一个迭代器,只能有一个for in 循环获取到迭代值
            4. 对于未取尽的迭代器,下次调用时,会接着上次的状态
    生成器
        生成器就是一个特殊的迭代器,其中使用到了状态保存技术
        (i for i in range(1, 10))
        def xxx():
            yield
        x =xxx()
        next(x)
        x.send(None)

        filter(function(a) ,iterable)
        map(function(a), iterable)

        from functools import reduce
        reduce(function(a), iterable, xx)
    魔术方法
        __class__
        __name__
        __module__
        __dict__
        __doc__
        __mro__
        __slots__

        __init__
        __new__
        __dir__
        __call__
        __doc__
        __str/repr__
        __len__
        __hash__

        __ne/eq/lt/le/gt/ge__
        __add/sub/mul/truediv/pow__
        __str/int/setitem/getitem/delitem__
        __enter/exit__
'''


这篇关于2021/6/14 魔术方法、可迭代对象、异常处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程