gpt4 book ai didi

python - 尽管Python中的所有内容都是引用,为什么Python Tutor在没有指针的情况下在列表中绘制字符串和整数?

转载 作者:行者123 更新时间:2023-12-02 01:57:03 24 4
gpt4 key购买 nike

我读到“Python 中的一切都是引用”。

但是,当我在 Python Tutor 中运行以下代码时:

lst = [1,[1]]

lst[1] 被绘制为指向列表的箭头,而 lst[0] 只是数字 1

我还明白,区别在于 lst[0] 是不可变的,而 lst[1] 是可变的。我仍然不明白如何在 Python Tutor 中解释绘图,或任何其他解释。

Python Tutor 中的绘图看起来好像数字本身保存在 lst[0] 中,而不是引用,但我猜这是错误的,因为“Python 中的所有内容都是引用”。

否则我们如何解释这幅图呢? Python Tutor 中的绘图是否具有误导性,而 lst[0] 中实际上存储了一个地址?

最佳答案

是的,你没看错:lst[0]中存储着一个地址,是int类型的Python对象的地址,代表整数1。

在 CPython(Python 的“标准”C 实现)中确实如此,但其他实现可能会使用其他方式。

按照惯例,图表通常仅显示“容器”对象的箭头,这些对象包含其他对象(列表、集合、元组、字典等)。 “标量”类型不包含其他对象(整数、 float 、 bool 值等),通常通过显示命名对象表示的值的人类可读字符串来显示。然而,容器对象从不直接包含标量对象,而是存储指向实现标量对象的 Python 对象的指针。

关于python - 尽管Python中的所有内容都是引用,为什么Python Tutor在没有指针的情况下在列表中绘制字符串和整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69519195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com