什么是循环引用的用途?

Sup*_*Man 9 python

在Python中,您可以向自己附加一个列表,它将接受赋值.

>>> l = [0,1]
>>> l.append(l)
>>> l
[0, 1, [...]]
>>> l[-1]
[0, 1, [...]]
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?

Python允许这样做而不是抛出一个错误,是因为它有潜在的用途,还是因为没有必要明确禁止这种行为?

Sco*_*der 4

这是因为它有潜在的用途,还是只是因为没有必要明确禁止这种行为?

两个都。列出存储引用,并且没有理由阻止它们存储某些其他有效的引用。

至于潜在用途,请考虑通用的自上而下射击类型视频游戏:

  • ALevel包含对 every 的引用Enemy,以便它可以在每一帧中绘制和更新它们。
  • AnEnemy包含对其 的引用Level,以便它可以(例如)查询到 的距离或在 中Player生成 a 。BulletLevel