python中的for循环底层原理详解+python中for循环的原理

在这个博客中,我们将讨论Python中循环的原理。
我们将从一组基本的例子及其语法开始,我们还将讨论与循环相关的else代码块的有用性
然后我们将介绍迭代对象、迭代设备和迭代设备协议,并学习如何创建我们自己的迭代对象和迭代设备。
之后,我们将讨论如何使用迭代对象和迭代实现来实现循环,而使用循环通过迭代设备协议来实现循环逻辑。
最后,我们将为循环反编译一个简单程序,并逐步介绍Python解释器在为循环执行时执行的指令,以满足每个人的好奇心。这些有助于理解用于循环运行时的内部工作原理。
蟒蛇给循环的
For语句是Python中执行迭代,的两个语句之一,另一个语句是while。如果您不熟悉Python的迭代,·迭代:那么Python中的while、break和continue语句是一个很好的起点。
在Python中,for 循环用于遍历迭代对象的所有元素。循环语句段对迭代对象的每个元素项执行一次。目前,我们可以把迭代物体想象成一个物体的集合,我们可以一个接一个地遍历其中的元素。我们将在下一节详细解释迭代和迭代物体。
简单的循环
让我们从一个简单的for 循环,开始,因为再调用小发猫API时,需要循环判断状态,它遍历字符串列表并打印每个字符串。
正如你所看到的,这个循环实际上把列表中的每一个单词都检查了一遍并打印出来。换句话说,在循环,的每次遍历中,变量字被指定为列表中的一个元素,然后执行for语句中的代码块。因为列表是元素的有序序列,所以循环以相同的顺序遍历这些元素。
为循环加上其他条款
对于循环,Python中可以选择是否关联一个else子句。else子句中的代码块在for 循环完成之后开始执行,也就是说,在遍历了迭代对象中的所有元素之后。现在让我们看看如何扩展前面的例子,以包括一个else条件(子句)。
else条款什么时候适用?
正如你所注意到的,else子句在for 循环完成后执行。其他代码块是什么意思?这份声明不是在对循环执行了同样的方式之后吗?我们经常遇到这样一种情况,当某些条件得到满足时,循环半途而废。如果不满足这个条件,则希望执行另一组语句。我们通常使用布尔-type标记实现,下面是一个例子。
通话结果:
对于其他代码块,我们可以避免使用布尔类型标记found _ item。让我们看看如何使用else子句重写上述方法。注意:如果循环的break语句被触发,else块将被跳过。
因此,else代码块适用于循环,有break语句的情况,我们希望在break条件未触发时执行一些语句。
否则,与else相关的语句只能在循环的末尾执行。当您在本文的最后一节查看反编译的字节码时,您会看到这一点。
循环语法
我们已经看到了一些简单的例子,我们将用循环的语法来结束这一节
基本上,set _ of _ statements _ 1是为iterable中的每个元素执行的。一旦所有元素被迭代,控制器将跳转到else代码块来执行set _ of _ statements _ 2。
请注意,else子句是可选的。如果找不到else子句,当遍历完所有元素并且控制器在程序后转到语句时,循环结束。
迭代对象和迭代器
迭代对象
在上一节中,我们使用了术语iteratable来表示循环中的迭代对象。现在,让我们试着理解Python中的iteratable对象是什么。
在Python中,迭代对象指的是可以为循环迭代的任何对象。这意味着当这个对象作为参数传递给iter()方法时,应该返回一个迭代器。让我们看一些Python中常用的内置迭代的例子。

原文地址:https://www.cnblogs.com/phploser/p/12629675.html