Python工程师必考的6个经典面试题


Posted in Python onJune 28, 2020

第1题:Python里面如何实现tuple和list的转换?

函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变

list转为tuple:

temp_list = [1,2,3,4,5]

将temp_list进行强制转换:tuple(temp_list)

确定是否转换成功:print(type(temp_list))

函数list(seq)可以把所有的序列和可迭代的对象转换成一个list,元素不变,排序也不变

tuple转为list:

temp_tuple = (1,2,3,4,5)

方法类似,也是进行强制转换即可:list(temp_tuple)

确定是否转换成功:print(type(temp_tuple))

第2题:Python里面search()和match()的区别?

它们两个都在re模块中

·match()函数是在string的开始位置匹配,如果不匹配,则返回None;

·search()会扫描整个string查找匹配;

match()

>>> import re
>>> print(re.match('hello','helloworld').span())  # 开头匹配到
(0, 5)
>>> print(re.match('hello','nicehelloworld').span()) # 开头没有匹配到
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print(re.match('hello','nicehelloworld').span())
AttributeError: 'NoneType' object has no attribute 'span'
>>>

search()

>>> print(re.search('a','abc'))
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> print(re.search('a','bac').span())
(1, 2)
>>>

结论:match() 使用限制更多

第3题: 如何用Python删除一个文件?

os模块的使用

os.remove(path)

删除文件 path,删除时候如果path是一个目录, 抛出 OSError错误。如果要删除目录,请使用rmdir()。

remove() 同 unlink() 的功能是一样的

os.remove('a.txt')
os.removedirs(path)

递归地删除目录。类似于rmdir(), 如果子目录被成功删除, removedirs() 将会删除父目录;但子目录没有成功删除,将抛出错误。

例如,os.removedirs(“a/b/c”) 将首先删除c目录,然后删除b和a,如果他们是空的话,则子目录不能成功删除,将抛出OSError异常

os.rmdir(path)

删除目录 path,要求path必须是个空目录,否则抛出OSError错误

第4题: is 和 == 的区别?

hon中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)

id 身份标识,就是在内存中的地址

完整的举例

>>> a = 'hello'
>>> b = 'hello'
>>> print(a is b)
True
>>> print(a==b)
True
>>> a = 'hello world'
>>> b = 'hello world'
>>> print(a is b)
False
>>> print(a == b)
True
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> print(a is b)
False
>>> print(a == b)
True
>>> a = [1,2,3]
>>> b = a
>>> print(a is b)
True
>>> print(a == b)
True
>>>

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等

is也被叫做同一性运算符(对象标示符),这个运算符比较判断的是对象间的唯一身份标识,也就是id(内存中的地址)是否相同

我们在检查 a is b 的时候,其实相当于检查 id(a) == id(b)。而检查a == b 的时候,实际是调用了对象 a 的 __eq()__ 方法,a == b 相当于 a.__eq__(b)。

这里还有一个问题,为什么 a 和 b 都是 “hello” 的时候,a is b 返回True,而 a 和 b都是 “hello world” 的时候,a is b 返回False呢?

这是因为前一种情况下Python的字符串驻留机制起了作用。对于较小的字符串,为了提高系统性能Python会保留其值的一个副本,当创建新的字符串的时候直接指向该副本即可。

所以 “hello” 在内存中只有一个副本,a 和 b 的 id 值相同,而 “hello world” 是长字符串,不驻留内存,Python中各自创建了对象来表示 a 和 b,所以他们的值相同但 id 值不同。

试一下当a=247,b=247时它们的id还是否会相等。事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了。

>>> a = 247
>>> b = 247
>>> print(a is b)
True
>>> a = 258
>>> b = 258
>>> print(a is b)
False
>>>

is 是检查两个对象是否指向同一块内存空间,而 == 是检查他们的值是否相等。is 比 == 更加严格。

第5题:a=1, b=2, 不用中间变量交换a和b的值?

方法一

>>> a = 5
>>> b = 6
>>> a = a+b
>>> b = a-b
>>> a = a-b

方法二

>>> a = a^b
>>> b = b^a
>>> a = a^b

方法三

a,b = b,a

第6题:说说你对zen of python的理解,你有什么办法看到它?

Python之禅

import this

试题扩展:

语言特性

1.谈谈对 Python 和其他语言的区别
2.简述解释型和编译型编程语言
3.Python 的解释器种类以及相关特点?
4.说说你知道的Python3 和 Python2 之间的区别?
5.Python3 和 Python2 中 int 和 long 区别?
6.xrange 和 range 的区别?

编码规范

7.什么是 PEP8?
8.了解 Python 之禅么?
9.了解 docstring 么?
10.了解类型注解么?
11.例举你知道 Python 对象的命名规范,例如方法或者类等
12.Python 中的注释有几种?
13.如何优雅的给一个函数加注释?
14.如何给变量加注释?
15.Python 代码缩进中是否支持 Tab 键和空格混用。
16.是否可以在一句 import 中导入多个库?
17.在给 Py 文件命名的时候需要注意什么?
18.例举几个规范 Python 代码风格的工具

到此这篇关于Python工程师必考的6个经典面试题的文章就介绍到这了,更多相关6个Python工程师必考的面试题内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的urllib模块使用详解
Jul 07 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
对numpy中shape的深入理解
Jun 15 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
查看端口并杀进程python脚本代码
Dec 17 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
Python使用ElementTree美化XML格式的操作
Mar 06 Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
Python drop方法删除列之inplace参数实例
Jun 27 #Python
对python pandas中 inplace 参数的理解
Jun 27 #Python
浅谈PyTorch中in-place operation的含义
Jun 27 #Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 #Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 #Python
Pytorch 高效使用GPU的操作
Jun 27 #Python
Keras中的两种模型:Sequential和Model用法
Jun 27 #Python
You might like
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
2016/12/23 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JavaScript继承方式实例
2010/10/29 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
使用原生js封装webapp滑动效果(惯性滑动、滑动回弹)
2014/05/06 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
python读取csv文件示例(python操作csv)
2014/03/11 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
应届毕业生求职信范文
2013/12/18 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
文言文辞职信
2015/02/28 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技