当前位置: 首页 > 后端技术 > Python

这15道Python基础面试题你掌握了吗?

时间:2023-03-26 11:45:56 Python

1。Python中如何实现tuple和list的相互转换?答:直接使用tuple和list函数即可,type()可以判断对象的类型2.什么是lambda函数?它有什么好处?答:lambda表达式一般用在需要函数的时候,但是又不想费心给函数命名,即匿名函数lambda函数:主要目的是指向一个简短的回调函数lambda[arguments]:expression>>>a=lambdax,y:x+y>>>a(3,11)3.Python如何管理内存?答:从三个方面:对象引用计数机制、垃圾回收机制、内存池机制对象引用计数机制Python内部使用引用计数来跟踪内存中的对象,所有对象都有引用计数。当引用计数增加时:1、一个对象分配一个新的名字2、放入一个容器(如列表、元组或字典)当引用计数减少时:1、使用del语句显示销毁objectalias2,引用超出范围或被重新分配。sys.getrefcount()函数可以获取对象当前的引用计数。在大多数情况下,引用计数比您猜测的要大得多。对于数字和字符串等不可变数据,解释器会在程序的不同部分之间共享内存以节省内存。垃圾回收1、当一个对象的引用计数为零时,就会被垃圾回收机制处理掉。2、当两个对象a和b互相引用时,del语句可以减少a和b的引用计数,并破坏用来引用底层对象的名称。但是,由于每个对象都包含对其他对象的引用,因此引用计数不会清零,对象也不会被销毁。(从而导致内存泄漏)。为了解决这个问题,解释器周期性地执行一个循环检测器来搜索不可达对象的循环并将它们移除。内存池机制Python提供了内存的垃圾回收机制,但是它将不用的内存放入内存池,而不是归还给操作系统。1.Pymalloc机制。为了加快Python的执行效率,Python引入了内存池机制来管理小块内存的申请和释放。2、Python中所有小于256字节的对象都使用pymalloc实现的allocator,而大对象则使用系统的malloc。3.对于Python对象,比如整数、浮点数、Lists,它们都有自己私有的内存池,对象之间不共享自己的内存池。也就是说,如果你分配和释放了大量的整数,那么用来缓存这些整数的内存就不能再分配给浮点数了。4.请写一段Python代码删除一个列表中的重复元素答:1.使用set函数,set(list)2.使用字典函数,>>>a=[1,2,4,2,4,5,6,5,7,8,9,0]>>>b=b.fromkeys(a)>>>c=list(b.keys())5。编程使用sort进行排序,然后从最后一个元素开始判断a=[1,2,4,2,4,5,7,10,5,5,7,8,9,0,3]a.sort()last=a[-1]foriinrange(len(a)-2,-1,-1):iflast==a[i]:dela[i]else:last=a[i]print(a)6.如何在Python中复制一个对象?(赋值、浅拷贝、深拷贝的区别)答:赋值(=)是为对象创建一个新的引用,修改其中的任何一个变量都会影响另一个。浅拷贝:创建一个新对象,但它包含对原对象所包含项的引用(如果其中一个对象被引用修改,另一个也会被修改)深拷贝:创建一个新对象,并递归复制它包含的对象(修改其中一个,另一个不变)7.介绍except的用法和作用?答:try...except...except...else...执行try下的语句。如果抛出异常,执行过程会跳转到except语句。对每个except分支依次尝试执行,如果引发的异常与except中的异常组相匹配,则执行相应的语句。如果没有任何异常匹配,则异常将传递给调用此代码的下一个顶级try代码。如果try下的语句正常执行,则执行else块代码。如果发生异常,则不会执行。如果有finally语句,它总是在最后执行。8.Python中pass语句的作用是什么?答:pass语句不会执行任何操作。一般用作占位符或创建占位符程序,whileFalse:pass9。说说range()函数在Python中的用法?答案:列出一组数据,常用于forinrange()循环10.如何用Python查询和替换一个文本字符串?答:可以使用re模块中的sub()函数或者subn()函数进行查询替换,格式:sub(replacement,string[,count=0])(replacement是要替换的文本,string是需要替换的文本替换文本,count为可选参数,指的是最多替换的次数)>>>importre>>>p=re.compile('blue|white|red')>>>print(p.sub('colour','bluesocksandredshoes'))coloursocksandcolourshoes>>>print(p.sub('colour','bluesocksandredshoes',count=1))coloursocksandcolourshoes>>>print(p.sub('colour','bluesocksandredshoes',count=1))彩色袜子和redshoessubn()方法执行效果和sub()一样,但是会返回一个二维数组,包括被替换的新字符串和替换的总数。11.Python中match()和search()有什么区别?答:re模块中的match(pattern,string[,flags])检查字符串的开头是否与模式匹配。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如何生成随机数?答案:random模块随机整数:random.randint(a,b):返回一个随机整数x,arandom.randrange(start,stop,[,step]):返回范围(start,stop,step)内的一个随机值整数,不包括最终值。随机实数:random.random():返回一个0到1之间的浮点数random.uniform(a,b):返回指定范围内的一个浮点数。13.有没有工具可以帮助查找pythonbug和进行静态代码分析?答:PyChecker是python代码的静态分析工具。它可以帮助发现python代码错误并警告代码的复杂性和格式。Pylint是另一个可以执行编码标准检查的工具。14.如何在函数中设置全局变量?答:解决办法是在函数开头插入一个global语句:deff()globalx15。单引号、双引号、三引号的区别答:单引号和双引号是等价的。如果要换行,需要符号(),三引号可以直接换行,并且可以包含注释如果要表示字符串Let'sgo单引号:s4='Let'sgo'双引号:s5="Let'sgo"s6='我真的很喜欢“蟒蛇”!这就是为什么单引号和双引号都可以表示字符串的原因。文渊网,仅供学习,侵删。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,800+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕你学不会!https://shimo.im/docs/JWCghr8...《Python学习资料》关注公众号【蟒圈】,每日优质文章推送。