|
想求助一个关于Python 3.5变量内存分配的问题.如下所示, str类型值一样,那么变量的内存地址也一样,这个比较好理解.
但是tuple类型,如果是个空元组, 那么a和b的地址是一样的, 如果是(1,2,3), a和b的地址就不一样了. 元组是不能改变的,那为何python会为两个相同值的元组分配不同的内存呢?
多谢指点
- >>> a = "hello"
- >>> b = "hello"
- >>> c = a
- >>> print(type(a), id(a), type(b), id(b), type(c), id(c))
- <class 'str'> 2897251552368 <class 'str'> 2897251552368 <class 'str'> 2897251552368
- >>> a = (1,2,3)
- >>> b = (1,2,3)
- >>> c = a
- >>> print(type(a), id(a), type(b), id(b), type(c), id(c))
- <class 'tuple'> 2897252172424 <class 'tuple'> 2897252172640 <class 'tuple'> 2897252172424
- >>>
- >>> a = ()
- >>> b = ()
- >>> c = a
- >>> print(type(a), id(a), type(b), id(b), type(c), id(c))
- <class 'tuple'> 2897204740168 <class 'tuple'> 2897204740168 <class 'tuple'> 2897204740168
- >>>
复制代码
|
|