可迭代对象、迭代器、生成器。闭包、装饰器

本文详细介绍了Python编程中的可迭代对象、迭代器、生成器、闭包和装饰器。可迭代对象包括列表、元组等,可以通过for循环遍历。迭代器通过next()或__next__()获取值,生成器使用yield关键字实现,可以节省内存。装饰器允许在不修改原函数代码的情况下,为其添加新功能。
摘要由CSDN通过智能技术生成

文章目录

一、可迭代对象

1.可迭代对象定义

2.可迭代对象的判断

二、迭代器

1.迭代器的定义

2.迭代器的创建

3.迭代器的作用

4.迭代器与可迭代对象的区别

三、生成器

1.生成器的定义

 2.应用场景

3.使用生成器实现斐波那契数列

4.深入了解 ‘yield’ 和  ‘send’ 

4.1 ‘yield’详解

4.1 ’send’详解

5.生成器的多处理

四、闭包

 五、装饰器

1.什么是装饰器

2.功能的实现


一、可迭代对象

1.可迭代对象定义

可迭代对象就是指通过 ‘for’ 循环,可以遍历出其中的数据。所以列表(list)、元组(tuple)、字典(dict)、字符串(str)都属于可迭代对象。

2.可迭代对象的判断

如何判断对象是否为可迭代对象有两种方法。

方法一:

通过导入 ‘collections’ 模块,代码如下:

import collections

list_a = ['1', '2', '3', '4']
print(isinstance(list_a, collections.Iterable))             # True

tuple_a = ('1', '2', '3', '4')
print(isinstance(tuple_a, collections.Iterable))            # True

dict_a = {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
print(isinstance(dict_a, collections.Iterable))             # True

str_a = '1234'
print(isinstance(str_a, collections.Iterable))              # True

代码的意思就是:该对象是不是一个可迭代的对象,是返回True,否返回False。

方法二:

通过 'dir(  )' 函数查看对象的属性

list_a = ['1', '2', '3', '4']
print(dir(list_a))

tuple_a = ('1', '2', '3', '4')
print(dir(tuple_a))

dict_a = {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
print(dir(dict_a))

str_a = '1234'
print(dir(str_a))

 输出可以查看到属性,会发现  列表(list)、元组(tuple)、字典(dict)、字符串(str),都有一个 ’ __iter__ ‘ 的属性,那这个 ’ __iter__ ‘ 方法什么意思?就是可迭代对象的意思。

二、迭代器

1.迭代器的定义

可以通过next(  )或 '__next__' 不断返回下一个值。它具有 '__iter__' 和 '__next__' 属性,这就是迭代器。

2.迭代器的创建

通过 ' iter(  ) ' 或者 ' __iter__ ' 就创建了一个迭代器。代码如下:

list_a = ['1', '2', '3', '4']
a_iter = list_a.__iter__()
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))




"""
输出为:
1
2
3
4
Traceback (most recent call last):
File "xxx.py",line 7, in <module>
    print(next(a_iter))
StopIteration
"""

还可以通过以下代码创建一个迭代器:

a = (i for i in range(0, 5))
print(a)                # 返回的是一个地址:<generator object <genexpr> at 0x000001F2FB144150>

# 调用
print(a.__next__())             # 0
print(a.__next__())             # 1
print(a.__next__())     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值