2019 Python最新面试题及答案16道题


Posted in Python onApril 11, 2019

1.Python是如何进行内存管理的?

答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制

一、对象的引用计数机制

Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。

引用计数增加的情况:

1,一个对象分配一个新名称

2,将其放入一个容器中(如列表、元组或字典)

引用计数减少的情况:

1,使用del语句对对象别名显示的销毁

2,引用超出作用域或被重新赋值

sys.getrefcount( )函数可以获得对象的当前引用计数

多数情况下,引用计数比你猜测得要大得多。对于不可变数据(如数字和字符串),解释器会在程序的不同部分共享内存,以便节约内存。

二、垃圾回收

1,当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。

2,当两个对象a和b相互引用时,del语句可以减少a和b的引用计数,并销毁用于引用底层对象的名称。然而由于每个对象都包含一个对其他对象的应用,因此引用计数不会归零,对象也不会销毁。(从而导致内存泄露)。为解决这一问题,解释器会定期执行一个循环检测器,搜索不可访问对象的循环并删除它们。

三、内存池机制

Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。

1,Pymalloc机制。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。

2,Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。

3,对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。

2.什么是lambda函数?它有什么好处?

答:lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数

lambda函数:首要用途是指点短小的回调函数

lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)

3.Python里面如何实现tuple和list的转换?

答:直接使用tuple和list函数就行了,type()可以判断对象的类型

4.请写出一段Python代码实现删除一个list里面的重复元素

答:

1,使用set函数,set(list)

2,使用字典函数,

>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]
>>> b={}
>>>b=b.fromkeys(a)
>>>c=list(b.keys())
>>> c

5.编程用sort进行排序,然后从最后一个元素开始判断

a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]
a.sort()
last=a[-1]
for i inrange(len(a)-2,-1,-1):
if last==a[i]:
del a[i]
else:last=a[i]
print(a)

6.Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如list();3,copy模块的copy()函数}

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改变){copy模块的deep.deepcopy()函数}

7.介绍一下except的用法和作用?

答:try…except…except…[else…][finally…]

执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行

如果存在finally语句,最后总是会执行。

8.Python中pass语句的作用是什么?

答:pass语句不会执行任何操作,一般作为占位符或者创建占位程序,whileFalse:pass

9.介绍一下Python下range()函数的用法?

答:列出一组数据,经常用在for  in range()循环中

10.如何用Python来进行查询和替换一个文本字符串?

答:可以使用re模块中的sub()函数或者subn()函数来进行查询和替换,

格式:sub(replacement, string[,count=0])(replacement是被替换成的文本,string是需要被替换的文本,count是一个可选参数,指最大被替换的数量)

>>> import re
>>>p=re.compile(‘blue|white|red')
>>>print(p.sub(‘colour','blue socks and red shoes'))
colour socks and colourshoes
>>>print(p.sub(‘colour','blue socks and red shoes',count=1))
colour socks and redshoes

subn()方法执行的效果跟sub()一样,不过它会返回一个二维数组,包括替换后的新的字符串和总共替换的数量

11.Python里面match()和search()的区别?

答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。

re模块中research(pattern,string[,flags]),在string搜索pattern的第一个匹配值。

>>>print(re.match(‘super', ‘superstition').span())
(0, 5)
>>>print(re.match(‘super', ‘insuperable'))
None
>>>print(re.search(‘super', ‘superstition').span())
(0, 5)
>>>print(re.search(‘super', ‘insuperable').span())
(2, 7)

12.用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别?

答:术语叫贪婪匹配( <.*> )和非贪婪匹配(<.*?> )

例如:

test

<.*> :

test

<.*?> :

13.Python里面如何生成随机数?

答:random模块

随机整数:random.randint(a,b):返回随机整数x,a<=x<=b

random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。

随机实数:random.random( ):返回0到1之间的浮点数

random.uniform(a,b):返回指定范围内的浮点数。

14.有没有一个工具可以帮助查找python的bug和进行静态的代码分析?

答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告

Pylint是另外一个工具可以进行codingstandard检查

15.如何在一个function里面设置一个全局的变量?

答:解决方法是在function的开始插入一个global声明:

def f()

global x

16.单引号,双引号,三引号的区别

答:单引号和双引号是等效的,如果要换行,需要符号(\),三引号则可以直接换行,并且可以包含注释

如果要表示Let's go 这个字符串

单引号:s4 = ‘Let\'s go'

双引号:s5 = “Let's go”

s6 = ‘I realy like“python”!'

这就是单引号和双引号都可以表示字符串的原因了

总结

以上所述是小编给大家介绍的2019 Python最新面试题及答案16道题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中lambda的用法及其与def的区别解析
Jul 28 Python
Python实现多行注释的另类方法
Aug 22 Python
Python选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
Python之父谈Python的未来形式
Jul 01 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
python自动化之Ansible的安装教程
Jun 13 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
【python】matplotlib动态显示详解
Apr 11 #Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 #Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 #Python
python面试题小结附答案实例代码
Apr 11 #Python
Python3使用Matplotlib 绘制精美的数学函数图形
Apr 11 #Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 #Python
Python单元和文档测试实例详解
Apr 11 #Python
You might like
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
2019/05/30 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
Python机器学习之决策树算法
2017/12/22 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python 同时读取多个文件的例子
2019/07/16 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
通过实例解析python and和or使用方法
2020/11/14 Python
怎样写好自我鉴定
2013/12/04 职场文书
公务员转正考察材料
2014/02/07 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
单位消防安全责任书
2014/07/23 职场文书
2014年应急工作总结
2014/12/11 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
护理工作个人总结
2015/03/03 职场文书
2015年电工工作总结
2015/04/10 职场文书
建党伟业观后感
2015/06/01 职场文书
矛盾论读书笔记
2015/06/29 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书