Python必会的12道面试题,看看你会几题?
off999 2024-10-12 06:11 16 浏览 0 评论
今天技术学派为大家收集了一些Python的面试题,最近好多小伙伴给我留言说在学习Python,希望可以多发一些Python的文章。小编非常欣慰有这么多好学的小伙伴,那大家加油,把Python学好,每天都进步一点点。接下来就把这12道面试题分享给大家。
1.单引号、双引号和三引号之间的区别
单引号和双引号主要是用来表示字符串
比如:
单引号:'python'
双引号:"python"
区别:
若你的字符串里面本身包含单引号,必须用双引号包裹。
比如:"can't find the log\n"
三引号
三单引号:'''python ''',也可以表示字符串一般用来输入多行文本,或者用于大段的注释。
三双引号:"""python""",一般用在类里面,用来注释类,这样省的写文档,直接用类的对象__doc__访问获得文档。
2.Python的参数传递,是值传递还是引用传递?
Python的参数传递有:
位置参数
默认参数
可变参数
关键字参数
函数的传值到底是值传递还是引用传递,要看情况
不可变参数用值传递:
比如像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象。
可变参数是用引用传递:
比如像列表,字典这样的对象是通过引用传递,和C语言里面的用指针传递数组很相似,可变对象能在函数内部改变。
3.什么是lambda函数?它的好处是什么?
lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda函数:首要用途是指点短小的回调函数。
lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)
好处:
lambda能和def做同样种类的工作,特别是对于那些逻辑简单的函数,直接用lambda会更简洁,而且省去取函数名的麻烦。
4.字符串格式化: %和 .format的区别是什么?
字符串的format函数非常灵活,很强大,可以接受的参数不限个数,并且位置可以不按顺序,而且有较为强大的格式限定符(比如:填充、对齐、精度等)。
5.Python是如何进行内存管理的?
Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数。
引用计数增加的情况:
一个对象分配一个新名称
将其放入一个容器中(如列表、元组或字典)
引用计数减少的情况:
使用del语句对对象别名显示的销毁
引用超出作用域或被重新赋值
垃圾回收
当一个对象的引用计数归零时,它将被垃圾收集机制处理掉。
内存池机制
Python提供了对内存的垃圾收集机制,它将不用的内存放到内存池而不是返回给操作系统:
Pymalloc机制:为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内存的申请和释放。
对于Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
6.介绍一下except的用法和作用
try…except…except…[else…][finally…]
执行try下的语句,如果引发异常,则执行过程会跳到except语句。对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。
如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行。
如果存在finally语句,最后总是会执行。
7.下面的代码会不会报错?
list = ['a', 'b', 'c', 'd', 'e']
print list[10:]
当试图访问一个超过列表索引值的成员将导致 IndexError(比如访问以上列表的 list[10])。尽管如此,试图访问一个列表的以超出列表长度数作为开始索引的切片将不会导致 IndexError,并且将仅仅返回一个空列表。
一个讨厌的小问题是它会导致出现Bug ,并且这个问题是难以追踪的,因为它在运行时不会引发错误。
8.以下的代码的输出将是什么? 并进行解释
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
>>>
1 1 1
1 2 1
3 2 3
可能使你困惑的应该是最后一行的输出结果是 3 2 3 而不是 3 2 1。为什么改变了 Parent.x 的值还会改变 Child2.x 的值,但是同时 Child1.x 值却没有改变?
这个答案的关键是:在 Python中,类变量在内部是作为字典处理的。如果一个变量的名字没有在当前类的字典中发现,将搜索祖先类(比如父类)直到被引用的变量名被找到.
首先,在父类中设置 x = 1 会使得类变量 x 在引用该类和其任何子类中的值为 1。这就是因为第一个 print 语句的输出是 1 1 1
然后,如果任何它的子类重写了该值(例如,我们执行语句 Child1.x = 2)该值仅仅在子类中被改变。这就是为什么第二个 print 语句的输出是 1 2 1
最后,如果该值在父类中被改变(例如,我们执行语句 Parent.x = 3),这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2)。这就是为什么第三个 print 输出是 3 2 3了。
9.说出下面list1,list2,list3的输出值分别是什么?
def extendList(val, list=[]):
list.append(val)
return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList('a')
print "list1 = %s" % list1
print "list2 = %s" % list2
print "list3 = %s" % list3
>>>
list1 = [10, 'a']
list2 = [123]
list3 = [10, 'a']
许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 ['a']。认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []。
尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。
因此,list1 和 list3 是操作的相同的列表。而list2是操作的它创建的独立的列表(通过传递它自己的空列表作为list参数的值)
10.请写出一段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
11.用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:
del a
else:last=a
print(a)
12.写出你认为最Pythonic的代码
下面给大家列出一些例子
交互变量
非Pythonic
temp = a
a = b
b = temp
pythonic:
a,b=b,a
判断其值真假
name = 'Tim'
langs = ['AS3', 'Lua', 'C']
info = {'name': 'Tim', 'sex': 'Male', 'age':23 }
非Pythonic
if name != '' and len(langs) > 0 and info != {}:
print('All True!')
pythonic:
if name and langs and info:
print('All True!')
列表推导式
[x for x in range(1,100) if x%2==0]
zip创建键值对
keys = ['Name', 'Sex', 'Age']
values = ['Jack', 'Male', 23]
dict(zip(keys,values))
pythonic的代码其实有很多,这里就给大家举几个典型的例子。
想了解更多编程内容,请关注-技术学派。
相关推荐
- Python自动化脚本应用与示例(python自动化脚本教程)
-
Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作O批量重命名文件...
- 如何使用Python实现一个APP(如何用python做一个程序)
-
要使用Python实现一个APP,你可以选择使用一些流行的移动应用开发框架,如Kivy、PyQt或Tkinter。这里以Kivy为例,它是一个跨平台的Python框架,可以用于创建漂亮的图形用户界面(...
- 免费定时运行Python程序并存储输出文档的服务推荐
-
免费定时运行Python程序并存储输出文档的服务推荐以下是几种可以免费定时运行Python程序并存储输出结果的云服务方案:1.PythonAnywhere特点:提供免费的Python托管环境支持定时...
- 【Python程序开发系列】如何让python脚本一直在后台保持运行
-
这是我的第385篇原创文章。一、引言让Python脚本在后台持续运行,有几种常见的方式,具体方式可以根据你的系统环境和需求选择。二、Linux或macOS系统2.1使用nohup命令no...
- 运行和执行Python程序(运行python的程序)
-
一、Python是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式:交互式编程在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行代码,你还可以继续...
- Python 初学者指南:计算程序的运行时长
-
在编写Python程序时,了解程序的运行时长是一项很有用的技能。这不仅能帮助你评估代码的效率,还能在优化程序性能时提供关键的数据支持。对于初学者来说,计算程序运行时长其实并不复杂,接下来就让我们看...
- pyest+appium实现APP自动化测试,思路全总结在这里
-
每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01appium环境搭建安装nodejshttp://nodej...
- 血脉觉醒后,编程小白我是如何通过Deepseek和Trae轻松开发软件的
-
以下就是作为一个编程小白的我,是如何一步步开发软件的保姆级教程,请点赞收藏:第一步:打开#deepseek#(首先关闭深度思考和联网搜索)输入或复制你要让它做一个什么样软件的要求和提示词(你可以先用...
- 我用Deepseek+Trae写的python小软件,小白也能轻松用上模型啦!
-
利用AI大模型deepseek,搭配TraeCN,用半个小时做了一个本地Ollama安装部署和一键卸载的小工具,哈哈哈!感觉还不错#deepseek#一直想做一个本地Ollama安装部署和一键卸载...
- 在安卓设备上运行Python的方法(安卓能运行python吗)
-
技术背景在安卓设备上运行Python可以为开发者提供更多的开发选择和灵活性,能够利用Python丰富的库和简洁的语法来开发各种应用,如游戏、脚本工具等。然而,由于安卓系统原生不支持Python,需要借...
- 零基础小白,DeepSeek全自动编程,超详细提示词,一键生成软件!
-
我前面发表了文章,详细说了编程零基础小白,如何利用DeepSeek进行编程的全过程,感兴趣的可以去看看:DeepSeek全自动编程很多人不会写提示词,不知道怎么开始对话。话不多说,请先看下图中的对话,...
- 小白用DeepSeek+Python编写软件(用python制作软件)
-
周末无事,用DeepSeek生成全部代码,写了一个mp3音乐播放器,几分钟搞定,DeepSeek确实太强大了。我的提示语是这么写的:“请用Python语言写一个音乐播放器,支持常见音乐格式,我是Pyt...
- 零基础使用DeepSeek开发Windows应用程序,超简单超实用!
-
你敢相信,我居然用DeepSeek开发了一个能用的Windows软件!整个过程就像和学霸同桌组队做作业,我负责提需求,DeepSeek负责写代码改bug,全程碰到任何问题直接丢给DeepSeek即可。...
- 第二篇:如何安装Python并运行你的第一个程序
-
欢迎回到我的Python入门教程系列!在上一篇中,我们讨论了为什么Python是一门值得学习的编程语言。今天,我们将迈出第一步:安装Python并运行你的第一个程序。无论你是Windows、macOS...
- Python 运行,带你找入口,快速读懂程序
-
有C或Java编程开发经验的软件开发者,初次接触python程序,当你想快速读懂python项目工程时,是否觉得python程序有些太过随意,让你看有些无所适从,进而有些茫然。这是...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Python自动化脚本应用与示例(python自动化脚本教程)
- 如何使用Python实现一个APP(如何用python做一个程序)
- 免费定时运行Python程序并存储输出文档的服务推荐
- 【Python程序开发系列】如何让python脚本一直在后台保持运行
- 运行和执行Python程序(运行python的程序)
- Python 初学者指南:计算程序的运行时长
- pyest+appium实现APP自动化测试,思路全总结在这里
- 血脉觉醒后,编程小白我是如何通过Deepseek和Trae轻松开发软件的
- 我用Deepseek+Trae写的python小软件,小白也能轻松用上模型啦!
- 在安卓设备上运行Python的方法(安卓能运行python吗)
- 标签列表
-
- python计时 (54)
- python安装路径 (54)
- python类型转换 (75)
- python进度条 (54)
- python的for循环 (56)
- python串口编程 (60)
- python写入txt (51)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python qt (52)
- python人脸识别 (54)
- python斐波那契数列 (51)
- python多态 (60)
- python命令行参数 (53)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- centos7安装python (53)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)