最常见的35个Python面试题及答案.docx
- 文档编号:27897392
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:14
- 大小:21.91KB
最常见的35个Python面试题及答案.docx
《最常见的35个Python面试题及答案.docx》由会员分享,可在线阅读,更多相关《最常见的35个Python面试题及答案.docx(14页珍藏版)》请在冰豆网上搜索。
最常见的35个Python面试题及答案
最常见的35个Python面试题及答案(2018版)
1.Python面试问题及答案
作为一个Python新手,你必须熟悉基础知识。
在本文中我们将讨论一些Python而试的基础问题和高级问题以及答案,以帮助你完成而试。
包括Python开发问题、编程问题、数据结构问题、和Python脚本问题。
让我们来深入研究这些问题
Python而试问题
•Python的特点和优点是什么
Python可以作为编程的入门语言,因为他具备以下特质:
1.解释性
2.动态特性
3.面向对象
4.语法简洁
5.开源
6.丰富的社区资源
实际上Python的优点远不止这些,更详细的介绍可以阅读IntroductiontoPython(blogs/python-tutorial/)
.深拷贝和浅拷贝的区别是什么
深拷贝是将对象本身复制给另一个对象。
这意味着如果对对象的副本进行更改时不会影响原对象。
在Python中,我们使用deepcopy()函数进行深拷贝,使用方法如下:
深拷贝-Python而试问题及答案
浅拷贝是将对象的引用复制给期一个对象。
因此如果我们在副本中进行更改,则会影响原对彖。
使用copy()函数进行浅拷贝,使用方法如下:
浅拷贝-Python而试问题及答案
•列表和元祖有什么不同
主要区别在于列表是可变的,元祖是不可变的。
看下而的例子:
2.>»laylist[1-2
»>ir.yz-aple=1,3,3
;.>>>roycupleil>2
:
・Traceback.mcscreo:
enrcall1&3T:
•filelins「in
ny*uple:
L]=2
会出现以下错误提示:
TypeError:
*tuple'objectdoesnotsupportitemassignment
关于列表和元祖的更多内容参考TuplesvsLists(blogs/python-tuples-vs-lists/)
2.Python面试基础题
到是新手经常会被问到的一些Python基础题,有经验的人也可以参考这些问题来复习这些概念。
•解释Python中的三元表达式
与C++不同,在Python中我们不需要使用符号,而是使用如下语法:
[ontrue]if.expression]else[onfalse]
如果[expression]为真,则[ontrue]部分被执行。
如果表示为假则[onfalse]部分被执行
下面是例子:
Hi
・Python中如何实现多线程
线程是轻量级的进程,多线程允许一次执行多个线程。
众所周知,Python是一种多线程语言,它有一个多线程包。
GIL(全局解释器锁)确保一次执行单个线程。
一个线程保存GIL并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。
但实际上,只是线程轮流在CPU上。
当然,所有传递都会增加执行的开销。
・解释继承
一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法)。
继承使我们可以重用代码,并且还可以更方便地创建和维护代码。
Python支持以下类型的继承:
1.单继承-一个子类类继承自单个基类
2.多重继承-一个子类继承自多个基类
3.多级继承-一个子类继承自一个基类,而基类继承自另一个基类
4.分层继承-多个子类继承自同一个基类
5.混合继承-两种或两种以上继承类型的组合
关于继承的更多内容参考PythonInheritance(blogs/python-inheritance/)
•什么是Flask
Flask是一个使用Python编写的轻量级Web应用框架,使用BSD授权。
其WSGI工具箱采用Werkzeug,模板引擎则使用Jinja2。
除TWerkzeug和Jinja2以外几乎不依赖任何外部库。
因为Flask被称为轻量级框架。
Flask的会话会话使用签划cookie来允许用户查看和修改会话内容。
它会记录从一个谙求到另一个请求的信息。
但如果要修改会话,则必须有密钥。
我们将在后续的课程中进一步讨论Flask。
.如何在Python中仔理内存
Python用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它。
由解释器来管理它。
不过使用一些核心API,我们可以访问一些Python内存管理工具控制内存分配。
.解释Python中的helpO函数和dir()函数。
helpO函数返回帮助文档和参数说明:
运行结果如下:
Helponfunctioncopyinmodulecopy
copy(x)
ShallowcopyoperationonarbitraryPythonobjects.
Seethemodule!
s_doc_stringformoreinfo.
dir()函数返回对象中的所有成员(任何类型)
['—annotations_「_call_\"_class_\'—closure_:
'_code—「—defaults_'_delattr_\_diet_:
'_dir_;'_doc_;'_eq—:
'_format—:
'—ge_:
'_get_;'_getattribute_;'_globals_:
'_gt_;'_hash_;'_init_:
'_init_subclass_;A_kwdefaults__le_;\_It_\_module_:
v_name_'_ne_:
,_new_;'_qualname_;、_reduce_J_reduce_ex_:
'_repr_:
1_setattr_:
'_sizeof__:
1_str_:
"_subclasshook_T
・当退出Python时是否释放所有内存分配
答案是否立的。
那些具有对彖循环引用或者全局命名空间引用的变量,在Python退出是往往不会被释放
另外不会释放C库保留的部分内容。
.什么是猴子补丁
在运行时动态修改类和模块
>»classk:
deffuac.sell;
»>defmonkey:
printnoLkey**
>»=・=n©n>!
e-y
»>a=m・A()
>»a.func)
Hi,monkey
.什么是Python字典
字典是我在C++和Java中没有见过的数据结构,它拥有键-值对
3
字典是可变的,我们也可以用推导式的方式创建它.
{25:
5,16:
4,9:
3,4:
2,1:
1}
要了解更多字典的内容请点击PythonDictionaries(blogs/python-dictionaries/)
•能否解释一下*args和**kwargs
如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。
3
2
1
4
7
当我们不知道将会传入多少关键字参数时,使用**kwargs会收集关键字参数。
使用args和kwargs作为参数需只是举例,可以任意替换。
对于Python的基础题任何疑问,请在评论区提问。
•编程实现计算文件中的大写字母数
>»imporros
>»ea.ehdirCC:
^ser?
Lifei"gg北二仪)
»>wi*hopen1T2day.->:
•1as^oday:
counz«0
・for1m-eday・read():
if二•"upper:
7.oounz^l
・・printtcount)
26
・什么是负索引
我们先创建如下列表:
与正索引不同,负索引是从右边开始检索。
6
同样可以用于列表的切片:
[3,4,5,6,7]
.如何随机打乱列表中元素,要求不引用额外的内存空间
我们用random包中的shuffle0函数来实现。
[3,4,&0,5,7,6,2,1]
•解释Python中的joinO和split0函数
joinO函数可以将指泄的字符添加到字符串中。
'1,2,3,4,5,
split()函数可以用指左的字符分割字符串
[T,'2','3','4','5']
.Python区分大小写吗
验证Python是否区分大小写的方法是测试myname和Myname在程序中是不是算同一个标识符。
观察以下代码的返回结果:
Myname
NameError:
name1Myname?
isnotdefined
如你所见,这里出现了NameError,所以Python是区分大小的语言。
・Python中标识符的命名规则
Python中的标识符可以是任意长度,但必须遵循以下命名规则:
1.只能以下划线或者A-Z/a-z中的字母开头。
2.其余部分只能使用A-Z/a-z/0-9。
3.Python标识符区分大小写。
4.关键字不能作为标识符。
Python有以下这些关键字:
and
def
False
import
not
True
as
del
finally
in
or
try
assert
elif
for
is
pass
while
break
else
from
lambda
with
dass
except
global
None
raise
yield
continue
exec
if
nonlocal
return
•如何删除字符串中的前置空格
前置空格是第一个非空格字符前的所有空格,使用IstripO函数来删除.
'Ayushi'
如图这个字符串既包含前置空格也包含后置空格.调用IstripO函数去除了前置空格。
如果想去除后苣空格,使用rstripO函数。
'Ayushi'
以上是而向Python新手的基础题部分。
3.Python面试进阶题
Q.21至Q.35是针对有经验者的一些Python而试问题及英答案和示例。
.如何将字符串转换为小写
使用lower0函数
1ayushi*
转换为大写用upper0函数
'AYUSHI,
要检查字符串是否为全大写或全小写,使用isupp^O和islowerO函数
False
»>.1supper
True
>»・islower)
True
・>»逹TuWhx/・islo碇ri)
True
-•>»1$xVSHI*.isuppert)
True
像@和$这样的字符即满足大写也满足小写。
istitleO可以检査字符串是否是标题格式。
True
・Python中的pass语句有什么作用
我们在写代码时,有时可能只写了函数声明而没想好函数怎么写,但为了保证语法检査的正确必须输入一些东四。
在这种情况下,我们使用pass语句。
类似的break语句可以跳出循环。
0
1
2
continue语句可以跳到下一轮循环。
0
1
2
4
5
6
.请解释Python中的闭包
如果在一个内部函数里。
对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。
7
闭包的详细解释诘•点击ClosuresinPython。
(blogs/python-closure/)
•解释Python中的a**b返回a的b次方
1024
%是取模符号。
返回除法后的余数。
对于Python进阶而试问题和答案有任何疑问请在评论区提问。
.Python中有多少种运算符,解释算术运算符。
这类而试问题可以判断你的Python功底,可以举一些实例来回答这类问题。
(比较)运算符、赋值运算符、逻辑
在Python中我们有7中运算符:
算术运算符.关系运算符.位运算符、成员运算符、身份运算符。
1.加号(+)将两个对象的值相加。
15
2.减号(-)将第一个对象的值减去第二个对象的值。
-1
3.乘号仕)将两个对象的值相乘。
56
4.除号(/)将第一个对象的值除以第二个对象的值。
关于地板除法、取模和取幕,请参考上一个问题。
・解释Python中的关系运算符。
关系运算符用来比较两个对象。
1.判断小于«):
如果符号左边的值比右边小则返回True。
False
2.判断大于(»:
如果符号左边的值比右边大则返回True。
True
出现上而的错误结果是因为Python的浮点运算存在一些Bug.
3.判断小于等于«=):
如果符号左边的值小于或等于右边则返回True。
True
4.大判断于等于(>=):
如果符号左边的值大于或等于右边则返回True。
True
5.判断等于(=)如果符号两边的值相等则返回Trueo
True
6.判断不等于(!
=)如果符号两边的值不等则返回True。
True
True
.解释Python中的赋值和算数运算符
这是而试中的常见题目。
我们将算数运算符和赋值符号放在一起介绍。
1.
»>a="
2.
>»a-r=L
3.
»>e
8
1,
?
•>>1
2a
>»a
7
丄•
>»
2.
a
14
1•
»>a/«2
2.
7.0
1.
>»
2.
»>&
49.0
»>=:
2.
>»a
16.0
>»a%«4
2・»>4
0.0
.解释Python中的逻辑运算符
Python中有三个逻辑运算符:
andxor、not
False
VqxTrue
True
»>nos2==2
False
・解释Python中的成员运算符
使用in和notin运算符我们可以判断某个值是否在成员中。
»>'r.ie1in
True
»>'us'nocm'
True
・解释Python中的身份运算符
这是非常常见的Python而试题,用下而的示例来回答.
is和notis运算符可以判断两个对象是否相同
-.>»LCls'10*
False
>»Truei3norFal3e
True
.解释Python中的位运算符
此运算符按二进制位对值进行操作。
1.与(&)返回按位与结果
2
2.或(|)返回按位或结果
3
3.异或「)返回按位异或结果
1
4.取反(~)返回按位取反结果
-3
5.左移位(«)将符号左边数的二进制左移右边数位
4
1的二级制001左移2位变成100也即十进制的4
6.右移位(»)
1
想了解关于位运算符的更多内容请点击OperatorsinPython(blogs/python-operators/)
・如何在Python使用多进制数字
除十进制以外,在Python中还可以使用二进制、八进制、十六进制。
1.二进制数有0和1组成,我们使用Ob或0B前缀表示二进制数
10
使用bin()函数可以将数字转换为二进制
^binr
2.八进制数由数字0-7组成,使用前缀0。
或00表示8进制数
510'
3.十六进数由数字0-15组成,使用前缀Ox或者0X表示16进制数
<0x10'
'Oxf'
.如何获取字典中的所有键
使用keysO来获取字典中的所有键
•问什么标识符不建议使用下划线开头
因为在Python中以下划线开头的变屋为私有变量,如果你不想让变疑私有,就不要使用下划线开头。
•如何声明多个变量并赋值
有两种方式:
.什么是元组的解封装
首先我们来介绍元组封装:
(3,4,5)
将3,4,5封装到元组mytuple中。
现在我们要将这些值解封装到变量X,y,z中
12
以上是Python髙级而试问题和答案,新手也可以参考这些问题以获得进阶的Python知识。
4.结束语
本篇文章介绍了一些重要的Python而试问题和答案,后续我们还会增加。
在你而试之前应该熟练掌握这些。
如有想添加的问题欢迎随时评论。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 35 Python 试题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)