前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | 30个经典Python面试考问题详解(上)

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

作者头像
用户6888863
发布2020-07-17 17:27:34
9280
发布2020-07-17 17:27:34
举报

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

01

列表和元组有什么区别?

  • 列表是可变的,在创建之后可以对其进行任意的修改
  • 元组是不可变的,元组一旦创建,便不能对其进行更改
  • 列表表示的是顺序,它们是有序序列,通常是同一类型的对象,比如说都是字符串类型,又或者是都是数值类型
  • 元素表示的是结构,可以用来存储不同数据类型的元素,比如说(2, "Mike", "2020-07013")

02

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

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

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

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

03

什么是装饰器?

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

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

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

得出的结果如下图所示,

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

04

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

  • 实例方法(instance methods): 接受self参数,并且与类的特定实例相关
  • 静态方法(static methods): 使用装饰器@staticmethod,与特定实例无关,其自身就是一个独立的、单纯的函数
  • 类方法(class methods): 接受cls参数,并且可以修改类本身

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

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

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

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

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

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

05

字典和JSON有什么区别?

  • Dict是Python中的一种数据类型,是无序的键和值之间的集合
  • JSON只是一个遵循指定格式的字符串,用于传输数据

06

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

  • 在列表中查找一个值需要O(n)时间,因为需要遍历整个列表明直到找到值为止,
  • 在字典中查找一个值只需要O(1)时间,因为它是一个哈希表

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

07

append和extend有什么区别

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 关于数据分析与可视化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档