程序大猩猩 2019-01-07 17:57 采纳率: 0%
浏览 228

Python中扁平序列的地址分配问题

流畅的Python一书中,谈到**扁平序列**(str等数据类型)其实是一段连续的内存空间。
我在Python3.7试了下,代码如下:

str1='1234'
print(id(str1[0]),id(str1[1]),id(str1[2]))
print(id(str1[1])-id(str1[0]),id(str1[2])-id(str1[1]),id(str1[3])-id(str1[2]))

输出结果如下:

2068597257808 2068626550600 2068626567384
29292792 16784 641104

现在,请问各位大牛,既然是连续的地址空间,为什么每个元素的地址相差那么多?难道不是像c++中数组那样跨度一样吗?

  • 写回答

1条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2024-07-19 11:47
    关注

    你这么打印是不对的,应该for i in str1:print(id(i))才能看到真实的地址情况,你用切片实际上打印的是一个引用指针而已

    评论

报告相同问题?