python基础面试题

废话篇:最近在找工作,复习了很多python方面的内容,好记性不如烂笔头,还是把这些记下来方便记忆

1.可变与不可变对象

可变对象:list dict set (大部分容器对象/不可哈希)

不可变对象:tuple(唯一一个不可变容器对象) string int float bool (可哈希)

:由于python的机制,它是存引用的,即传址

:赋值其实是建立一个指针指向该对象的内存地址空间,可以用id(xx对象查看),当改变可变对象的赋值 = 新建一个指针,指向新建对象地址空间,而老的对象如果没有引用的话就被垃圾回收了,所以改变不可变对象的值后该变量的id改变了,即认为是不可变的.而可变对象改变其内容的值后,id不会改变,即为可变对象

为什么要有可变与不可变: 可变对象一般是容器对象,存储的数据量较大,如果另外开辟一块内存空间有点浪费资源,故在原来的基础上进行修改,所以可以看到可以任意修改可变对象的内容而不需要重新赋值

a = [1,2,3]

a[0] = 'aa'

print(a) >>['aa',2,3]

2.set对象 = dict的key

set中存的对象必须是唯一,不可变的 因为set中的对象必须是可哈希的(有一个哈希值,并且在改对象的生命周期内哈希值不会改变)

set对象本身是可变对象

你可能感兴趣的:(python基础面试题)