学习python面试考题

1、is 和 == 的区别
2、赋值、浅拷贝、深拷贝
3、可变对象和不可变对象
4、python2和python3的区别(任意说5个)
5、列表中+,extend,append的区别

1、is 和 == 的区别
is 检查id,即两个对象是否指向同一个内存,id(a)==id(b);= =是判断两个对象的值是否相等

a=[1,2,3,4]
b=[1,2,3,4]
print(a is b) False
print(a==b) True

2、赋值、浅拷贝、深拷贝
赋值,是对象的引用,a和b指向同一个对象,一个变动,另一个也跟着变动
浅拷贝,a和b是独立的对象,但子对象还是指向同一个对象 b=a.copy()
深拷贝,a和b是完全独立的 b=copy.deepcopy(a)
3、可变对象和不可变对象
可变对象: list,dic,set
不可变对象:str,tuple,float,int 对于不可变对象进行改变,会生成一个新的对象

a=‘hello’
print(id(a)) 4489484080
a = a+'world'
print(a=id(a))4490118704

字典的key不能选用可变对象
同样,由于str为不可变对象,字符串拼接时每次会开辟新的空间,而join利用列表可变的性质,更方便,‘str’.join(list)对list中的元素以指定的字符str连接生成一个新的字符串
4、python2和python3的区别(任意说5个)
print,除法/,2中3/2=1;3中3/2=1.5,3//2=1,向下取整
5、列表中+,extend,append的区别
对两个列表+,是拼接两个列表,不是对应元素相加
a+b类似于a.extend(b),append是列表末尾每次拼接一个元素

你可能感兴趣的:(学习python面试考题)