在不使用全局变量的情况下,可以使用闭包或者生成器函数来实现迭代。
def create_iterator():
index = 0
def iterator():
nonlocal index
index += 1
return index
return iterator
my_iterator = create_iterator()
print(my_iterator()) # 输出 1
print(my_iterator()) # 输出 2
print(my_iterator()) # 输出 3
def iterator():
index = 0
while True:
index += 1
yield index
my_generator = iterator()
print(next(my_generator)) # 输出 1
print(next(my_generator)) # 输出 2
print(next(my_generator)) # 输出 3
这两种方法都可以实现一个迭代器函数,每次调用该函数都会返回一个新的值。不同的是,闭包方式需要调用create_iterator
函数来创建一个新的迭代器,而生成器函数则直接返回一个生成器对象。
下一篇:不使用全局变量的new运算符