判断是否为可迭代对象
from collections. abc import Iterableobj = [ 1 , 2 , 3 ]
if isinstance ( obj, Iterable) : print ( "这是一个可迭代对象" )
else : print ( "这不是一个可迭代对象" )
_next_
是 Python 中迭代器对象的一个方法,用于获取下一个元素。
当使用迭代器进行迭代时,通过调用 __next__ 方法可以依次获取迭代器中的元素,
直到没有更多元素可获取时,会引发 StopIteration 异常。
产生生成器的方法:
使用函数和 yield
关键字**:在函数中使用 yield
语句来定义生成器。
def func ( ) . . . yield
列表推导式**:可以通过在列表推导式中使用 yield
来创建生成器。 gen = (i for i in range(5)) generator就是生成器 next ():获取生成器中的下一个元素。send(value) :向生成器发送一个值,并继续执行生成器函数到下一个 yield
语句。 throw(type, value=None, traceback=None):在生成器内部抛出异常。 close():关闭生成器,后续再调用 __next__()
会引发 StopIteration
异常。 协程: 执行过程中暂停和恢复,允许在一个函数内部实现多个任务的协作执行。协程通过yield关键字或特定的协程库来实现。
Python 的可迭代对象:
列表(List) 元组(Tuple) 字符串(String) 字典(Dictionary) 集合(Set) 文件对象(File Objects) 迭代器与迭代器: 可迭代的对象并不一定就是迭代器。 可迭代对象是能够通过迭代操作依次获取元素的对象, 而迭代器是实现了迭代器协议的对象,它不仅可以被迭代, 还能记住当前的迭代位置,并在每次迭代时返回下一个元素。 迭代器与生成器: 迭代器:是一个对象,它实现了迭代器协议,能够逐个返回元素。 生成器:是一种特殊的迭代器,它通过使用yield
关键字来定义,可以在执行过程中暂停和恢复,按需生成元素。 生成器是创建迭代器的一种简洁方式,
魔术方法:
魔术方法(Magic Methods)是 Python 中一些具有特殊名称和功能的方法。 它们通常以双下划线开头和结尾,如__init__
、__str__
、__len__
等。 __init__
:类的构造方法,用于初始化对象。触发条件 _str_ 方法的触发条件主要有以下几种: 使用
str()`函数将对象转换为字符串时**。 打印对象时 注意点 在自定义__str__
方法时需要注意以下几点: 返回值应为字符串类型:确保返回的是一个能够清晰表示对象的字符串。 简洁明了:尽量使返回的字符串简洁易懂,能够准确反映对象的关键信息。 一致性:保持返回的字符串与对象的实际状态一致,避免产生误导。 __str__
:定义对象的字符串表示形式。
class MyClass : def __init__ ( self, name) : self. name = namedef __str__ ( self) : return f"MyClass object with name: { self. name} " obj = MyClass( "example" ) print ( obj)
__len__
:定义对象的长度。
class MyList : def __init__ ( self, items) : self. items = itemsdef __len__ ( self) : return len ( self. items) my_list = MyList( [ 1 , 2 , 3 ] ) print ( len ( my_list) )
__del__
:对象被销毁时调用。 __del__
方法的触发条件通常有以下几种情况: 1. 程序结束时**:当程序正常结束运行时,会触发对象的__del__
方法。 2. 对象的所有引用都被删除时**:当对象不再有任何其他变量引用它时,会触发__del__
方法。__eq__
、__ne__
、lt 、__le__
、__gt__
、__ge__
:用于比较对象。sys.getrefcount() 获取对象的引用计数 __init__方法是 Python 中的一个特殊方法,也称为构造方法。 它在创建对象时被自动调用,用于对新创建的对象进行初始化操作。 可以在__init__方法中为对象的属性赋值,执行其他必要的初始化任务。 通过传递参数给__init__方法,为对象的name属性赋值
class MyClass : def __init__ ( self, name) : self. name = name
创建对象并进行初始化
obj = MyClass("示例对象")
__del__
__del__方法在对象即将被销毁时被调用。
需要注意的是,__del__方法的执行时间并不确定,
它可能不会及时被触发,尤其是在程序正常结束时。
并且,不建议在__del__方法中执行一些关键的操作或资源释放,因为它的执行可能不可靠。