内置类型的问题——小心循环的数据结构 | 第二部分 类型与操作 —— 第 9 章: 元组,文件和其他 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-大发黄金版app下载

未匹配的标注

我们其实在之前的练习中碰到过这个概念:如果一个集合对象包含到指向自己的引用,它就被称为循环对象。当python检测到对象中的循环时,它打印 [...],而非卡在无限循环中(就像它曾经在很久前那么做过):

>>> l = ['grail'] # append reference to same object
>>> l.append(l) # generates cycle in object: [...]
>>> l
['grail', [...]]

除了知道方括号中的三个点表示对象中的循环外,这个例子值得理解的原因是它会导致意外的问题——如果没有预见到,循环结构可能会导致代码进入意外的循环。

比如,一些遍历结构化数据的程序必须保留已访问项目的列表、字典或set,并在即将进入可能导致不想要的循环前检查它。参见附录d中的测试知识:part i 练习的答案来获取关于这个问题的更多信息。还请参见第19章中递归的通用讨论,还有第25章中的reloadall.py程序和第31章中的listtree类,来获取循环检测可以很重要的具体程序示例。

大发黄金版app下载的解决方案是知识:除非真的需要,不要使用循环引用,并确保在必须注意的程序中预料到它们。虽然有好的理由来创建循环,但除非有代码知道如何处理它们,引用自身的对象可能弊大于利。

本文章首发在 大发黄金版app下载 网站上。

上一篇 下一篇
讨论数量: 0



暂无话题~
网站地图