python iterable对象_python中常见的对象辨析(可迭代对象、迭代器对象、生成器对象)...

一 可迭代对象Iterable

A.定义

可作用于for循环的对象叫可迭代对象

B.包括

1.集合数据类型 序列,字典,集合

2.迭代器对象

C.访问可迭代对象

1.集合数据类型使用各自的访问方法

2.迭代器对象使用迭代器对象访问的方法

D.注意

1.具有__iter()__方法的可迭代对象具有可使用iter()函数变为迭代器对象

2.数值型可迭代对象即序列、字典、集合对应的可迭代对象

二 迭代器对象Iterator

A.定义

可作用于next()函数并能不断调用的对象叫迭代 器对象

B.包括

1.iter(具有__iter__方法的对象)的返回值

2.生成器

C.访问迭代器

1.循环遍历访问

2.使用next()方法访问

next(迭代器,标志位)当连续调用时,依次返回迭代器的元素,并记录当前位置(同指针),当超出时无标志位时会报Stoplteration异常,有标志位时返回标志位。

D.注意

1.迭代器对象一定具有__next()__方法

2.迭代器指针只能前进,不能调整和后退。

3.迭代器对象可使用序列转换函数转换为序列,但只能转换未被迭代的部分

4.序列的迭代单位由所属对象中自定义迭代方式决定<__next__>

>序列迭代器(以元素为迭代单位)

>文件迭代器(以行为迭代单位),

三 生成器对象

A.定义

生成器对象是一个存储算法并能记录上次位置的对象

B.包括

1.元组生成式

2.带有yield关键字的函数

def fib():

i = 0

while True:

yield i(返回) 或 i = yield(接收)

i = i+1

......

return StopIteration报错内容

C.方法

1.发送值方法

>obj.send(x) 发送x给生成器函数

2.调用值方法

>next(obj)

>obj.send(x)

D.注意

1.在函数中每次遇到yield关键字,程序都会冻结,有两种情况

>yield用于返回值(相当于return)

若yield后有参,则函数返回该参数

>yield用于接收值(相当于一个形参)

若yield无参,则yield将拥有即send函数发送的值。若使用next()调用则yield的值为None.

2.注意

>生成器运行结束时(正常结束/遇到return结束),会抛出StopIteration错误,return的返回值会自动作为错误说明。

四 可调用对象(callable)

A.定义

实例化前,实现了__call__ 方法的对象为可调用对象

B.包括

1.所有函数

>函数发生调用行为时返回的是函数的返回值

2.所有类

类发生调用行为时返回的是类的实例

3.实现__call__方法的实例

实例发生调用行为时返回的是__call__方法的返回值

C.其它

1.判断对象是否为可调用对象 callable(obj)返回True/False

2.可调用对象的调用方式:

可使用一对括号()来实现调用 callable_obj()

callable_obj()等价于callable.__call__()

3.可调用对象和函数语法规则完全相同,包括基本概念、参数处理、返回值

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值