函数内部for循环的交互状态



假设我们有这个函数:

def my_function:
for i in some_iterable:
do_something();

当我在另一个for循环中调用这个函数时:

for i in something:
my_function()

my_function()中的for循环是保持i的状态,还是每次调用函数时循环都从i = 0开始?如果是后者,我如何在每次调用函数时继续迭代函数内部的for循环?

主循环中的i变量和my_function内的i变量(我们称之为i'(是两个不同的变量。在功能执行结束之后,你没有访问i'的权限,但你有访问i的权限;"结束状态";对于i',您可以考虑使用生成器。

https://realpython.com/introduction-to-python-generators/

另一种方法是将i'作为参数传递并返回结束状态。

def my_function(start_i):
# code using start_i
return end_i

最新更新