z1991627 发表于 2020-12-10 10:53

请问'__iter__'和'_iter_'qu'区别!

本帖最后由 z1991627 于 2020-12-10 11:07 编辑

目前在家无聊学习Python,在看书图中遇见此问题,无法解答,求高手给个简易易懂的答案!
课本原本:

>>> astr = "python"
>>> hasattr(astr,'__iter__')
False
这里用内建函数hasattr()判断一个字符串是否是可迭代的,返回了False。用同样的方式可以判断:

>>> alst =
>>> hasattr(alst,'__iter__')
True
>>> hasattr(3, '__iter__')
False
但是实际写出代码的问题:

a =
hasattr(a,'__iter__')
True
a

hasattr(a,'__iter__')
True
hasattr(a,'_iter_')
False

z1991627 发表于 2020-12-10 11:09

刚刚使用PyCharm查询了下,应该是下划线问题,    在使用help(list.)后,所有弹出的函数都是两头双下划线,可是为什么单下划线,不提示错误显示返回结果为flase

hjlarry 发表于 2020-12-10 11:14

hasattr(a,b)表示去查询a有没有b属性或方法,__iter__ 是所有可迭代对象具备的方法

z1991627 发表于 2020-12-10 11:40

hjlarry 发表于 2020-12-10 11:14
hasattr(a,b)表示去查询a有没有b属性或方法,__iter__ 是所有可迭代对象具备的方法

看懂了( ̄∀ ̄),,谢谢(*°∀°)=3
页: [1]
查看完整版本: 请问'__iter__'和'_iter_'qu'区别!