本文将列举了一些在面试当中经常被提及的经典Python考问题并且提供了答案,献给那些已经毕业的应届大学生们以及其他求职者们
01
列表和元组有什么区别?
02
"is" 和 "=="有什么区别?
在解析这两种运算符之前,首先要知道的是Python中对象包含的三个基本要素,分别是: id(身份标识)、type(身份标识)和value(值)。而"is"和"=="都是对对象进行比较判断作用,但对对象比较判断的内容并不一致。
"=="用来比较两个对象的value(值)是否相等,例如两个字符串之间的比较,而"is"用来比较判断对象间的唯一身份标识,也就是id是否相同,比如说
用"=="去比较两变量,由于其中的“值"相同,因此返回的结果是true,而从上图中可以发现,变量"x"和变量"z"由于其"id"不同,所以用"is"来比较时返回的结果为False
03
什么是装饰器?
关于什么是装饰器,相信有不少读者都表示好奇,装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能和添加的额外功能。
比如说我们来编写一个装饰器,该装饰器用来调用另一个函数时记录日志
然后我们编写其他两个函数,并将装饰器添加到到其中,
得出的结果如下图所示,
而如果我们撤去原先添加上去的装饰器,则输出的结果为
04
Python中的实例方法、静态方法和类方法有什么区别?
我们将通过构建一个Person类来说明它们之间的区别
Person类呢有一个属性也就是age,默认值设为"22",当中每个实例初始化时都用了gender这个属性,与此同时还有三个方法,一个是实例方法,另外两个则是静态方法和类方法
首先让我们将gender的值设为"male",来初始化Person的一个实例,然后调用print_gender_age()方法来输出年龄和性别
现在我们调用静态方法。静态方法其本身与类并没有关系,在静态方法中,不会涉及到类中的属性和方法的操作,因此,读者也可以理解为,静态方法就是个独立的、单纯的函数,比如说
现在我们调用类方法来修改Person的属性age,然后调用print_gender_age()来输出结果,
可以看得出来,之前的年龄属性是"22",而现在则变成了"25"
05
字典和JSON有什么区别?
06
字典和列表的查找速度哪个更快?
所以说如果有很多值时会造成很大的时间差异,建议使用字典来提高速度,但使用字典也有其限制性,比如需要唯一键
07
append和extend有什么区别
在python中,append是将一个值添加到另一个列表中去,而extend则是将一个列表当中的值添加到另一个列表中去,如下图所示