干货 | 30个经典Python面试考问题详解(上)

点击“蓝字”关注,一起酷爽一夏!

本文将列举了一些在面试当中经常被提及的经典Python考问题并且提供了答案,献给那些已经毕业的应届大学生们以及其他求职者们

01

列表和元组有什么区别?

  • 列表是可变的,在创建之后可以对其进行任意的修改

  • 元组是不可变的,元组一旦创建,便不能对其进行更改

  • 列表表示的是顺序,它们是有序序列,通常是同一类型的对象,比如说都是字符串类型,又或者是都是数值类型

  • 元素表示的是结构,可以用来存储不同数据类型的元素,比如说(2, "Mike", "2020-07013")

02

"is" 和 "=="有什么区别?

在解析这两种运算符之前,首先要知道的是Python中对象包含的三个基本要素,分别是: id(身份标识)、type(身份标识)和value(值)。而"is"和"=="都是对对象进行比较判断作用,但对对象比较判断的内容并不一致

"=="用来比较两个对象的value(值)是否相等,例如两个字符串之间的比较,而"is"用来比较判断对象间的唯一身份标识,也就是id是否相同,比如说

干货 | 30个经典Python面试考问题详解(上)_第1张图片

干货 | 30个经典Python面试考问题详解(上)_第2张图片

干货 | 30个经典Python面试考问题详解(上)_第3张图片

用"=="去比较两变量,由于其中的“值"相同,因此返回的结果是true,而从上图中可以发现,变量"x"和变量"z"由于其"id"不同,所以用"is"来比较时返回的结果为False

03

 什么是装饰器?

关于什么是装饰器,相信有不少读者都表示好奇,装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能和添加的额外功能。

比如说我们来编写一个装饰器,该装饰器用来调用另一个函数时记录日志

干货 | 30个经典Python面试考问题详解(上)_第4张图片

然后我们编写其他两个函数,并将装饰器添加到到其中,

干货 | 30个经典Python面试考问题详解(上)_第5张图片

得出的结果如下图所示,

干货 | 30个经典Python面试考问题详解(上)_第6张图片

而如果我们撤去原先添加上去的装饰器,则输出的结果为

干货 | 30个经典Python面试考问题详解(上)_第7张图片

04

Python中的实例方法、静态方法和类方法有什么区别?

  • 实例方法(instance methods): 接受self参数,并且与类的特定实例相关

  • 静态方法(static methods): 使用装饰器@staticmethod,与特定实例无关,其自身就是一个独立的、单纯的函数

  • 类方法(class methods): 接受cls参数,并且可以修改类本身

我们将通过构建一个Person类来说明它们之间的区别

干货 | 30个经典Python面试考问题详解(上)_第8张图片

Person类呢有一个属性也就是age,默认值设为"22",当中每个实例初始化时都用了gender这个属性,与此同时还有三个方法,一个是实例方法,另外两个则是静态方法和类方法

首先让我们将gender的值设为"male",来初始化Person的一个实例,然后调用print_gender_age()方法来输出年龄和性别

干货 | 30个经典Python面试考问题详解(上)_第9张图片

现在我们调用静态方法。静态方法其本身与类并没有关系,在静态方法中,不会涉及到类中的属性和方法的操作,因此,读者也可以理解为,静态方法就是个独立的、单纯的函数,比如说

干货 | 30个经典Python面试考问题详解(上)_第10张图片

现在我们调用类方法来修改Person的属性age,然后调用print_gender_age()来输出结果,

干货 | 30个经典Python面试考问题详解(上)_第11张图片

可以看得出来,之前的年龄属性是"22",而现在则变成了"25"

05

字典和JSON有什么区别?

  • Dict是Python中的一种数据类型,是无序的键和值之间的集合

  • JSON只是一个遵循指定格式的字符串,用于传输数据

06

字典和列表的查找速度哪个更快?

  • 在列表中查找一个值需要O(n)时间,因为需要遍历整个列表明直到找到值为止,

  • 在字典中查找一个值只需要O(1)时间,因为它是一个哈希表

所以说如果有很多值时会造成很大的时间差异,建议使用字典来提高速度,但使用字典也有其限制性,比如需要唯一键

07

append和extend有什么区别

在python中,append是将一个值添加到另一个列表中去,而extend则是将一个列表当中的值添加到另一个列表中去,如下图所示

干货 | 30个经典Python面试考问题详解(上)_第12张图片

干货 | 30个经典Python面试考问题详解(上)_第13张图片

扫码关注我们

未完待续!!!

你可能感兴趣的:(列表,字符串,python,java,html)