按关键词阅读: 基本面 试题 解答 深入 Python
1、梦想不会辜负每一个努力的人Python基本面试题|深入解答分享给大家的11道Python面试题 , 好多小伙伴都很积极的去思考分析 ,给我留 言的同学非常多 , 非常欣慰有这么多好学的小伙伴 , 大家一起学习 , 一起加油 , 把Python学好 , 今天我就把11道面试题细细解答一下1. 单引号 , 双引号 , 三引号的区别分别阐述3种引号用的场景和区别1) ,单引号和双引号主要用来表示字符串比如:单引号:python双引号:python2) .三引号三单引号:python ,也可以表示字符串一般用来输入多行文本 , 或者用于大段的 注释三双引号:python , 一般用在类里面 , 用来注释类 , 这样省的写文档 , 直接用类 的对象_do 。
2、c_访问获得文档区别:若你的字符串里面本身包含单引号 , 必须用双引号比如:cant find the logn2. Python的参数传递是值传递还是引用传递举例说明Python函数参数传递的几种形式 , 并说明函数传参是值传递还是引用 传递1).Python的参数传递有:位置参数默认参数, 可变参数 , 关键字参数2)函数的传值到底是值传递还是引用传递 , 要分情况a. 不可变参数用值传递:像整数和字符串这样的不可变对象 , 是通过拷贝进行传递的 , 因为你无论如何都不可能在原处改变不可变对象b. 可变参数是用引用传递的比如像列表 , 字典这样的对象是通过引用传递 , 和C语言里面的用指针传递数组 很相似 , 可变对象能在函 。
3、数内部改变.3.什么是lambda函数?它有什么好处?举例说明lambda的用法 , 并说明用lambda的优点1).lambda 的用法:lambda 是匿名函数 , 用法如下 :lambda arg1,arg2.argN:expression using args2).优点lambda能和def做同样种类的工作 , 特别是对于那些逻辑简单的函数 , 直接用 lambda会更简洁 , 而且省去取函数名的麻烦(给函数取名是个技术活)4. 字符串格式化:和.format的区别字符串的format函数非常灵活 , 很强大 , 可以接受的参数不限个数 , 并且位置可 以不按顺序 , 而且有较为强大的格式限定符(比如:填充 , 对齐 , 精度等 。
4、)5. Python是如何进行内存管理的引用计数:引用计数加一 , del删除减一内存池垃圾回收1).对象的引用计数机制Python内部使用引用计数 , 来保持追踪内存中的对象 , 所有对象都有引用计数 。
引用计数增加的情况:一个对象分配一个新名称将其放入一个容器中(如列表、元组或字典)引用计数减少的情况:使用del语句对对象别名显示的销毁引用超出作用域或被重新赋值2) .垃圾回收当一个对象的引用计数归零时 , 它将被垃圾收集机制处理掉 。
3) 内存池机制Python提供了对内存的垃圾收集机制 , 但是它将不用的内存放到内存池而不是 返回给操作系统:Pymalloc机制:为了加速Python的执行效率 , Python引 。
5、入了一个内存池机制 ,用于管理对小块内存的申请和释放 。
对于Python对象 , 如整数 , 浮点数和List , 都有其独立的私有内存池 , 对象间不 共享他们的内存池 。
也就是说如果你分配又释放了大量的整数 ,用于缓存这些整 数的内存就不能再分配给浮点数 。
6. 写一个函数,输入一个字符串,返回倒序排列的结果输入:string_reverse( abcdf:), fedct写出你能想到的多种方法1).利用字符串本身的翻转def stri ng_reverse1(text=abcdef):return text:-1 2).把字符串变成列表 , 用列表的reverse函数3) .新建一个列表 , 从后往前取4).利用双向 。
【Python|Python基本面试题深入解答】6、列表deque中的extendleft函数5).递归7. 按升序合并如下两个list,并去除重复的元素listl = 2, 3, 8, 4, 9, 5, 6list2 = 5, 6, 10, 17, 11,21).最简单的方法用setIist3=list1+list2 print sorted(list(set(list3)2).递归先选一个中间数 , 然后一边是小的数字 , 一边是大的数字 , 然后再循环递归 , 排 完序(是不是想起了 c里面的冒泡)8. 以下的代码的输出将是什么?说出你的答案并解 释class Pare nt(object):x = 1class Child1(Pare nt):pass 。
7、class Child2(Pare nt):passprint Pare nt.x, Childl.x, Child2.xChildl.x = 2print Pare nt.x, Childl.x, Child2.xPare nt.x = 3print Pare nt.x, Child1.x, Child2.x1 1 11 2 13 2 3解答:使你困惑或是惊奇的是关于最后一行的输出是3 2 3而不是3 2 1 。
为什么改变了 Parent.x的值还会改变 Child2.x的值 , 但是同时 Child1.x值却没有改变?这个答案的关键是 , 在 Python中 , 类变量在内部是作为字典处理的 。
如果一个。
8、变量的名字没有在当前类的字典中发现 , 将搜索祖先类(比如父类)直到被引用的变量名被找到.首先 , 在父类中设置x= 1会使得类变量x在引用该类和其任何子类中的值为 1 。
这就是因为第一个print语句的输出是1 1 1然后 , 如果任何它的子类重写了该值(例如 , 我们执行语句Child1.x = 2该值仅仅在子类中被改变 。
这就是为什么第二个print语句的输出是1 2 1最后 , 如果该值在父类中被改变(例如 , 我们执行语句Pare nt.x = 3) , 这个改变会影响到任何未重写该值的子类当中的值(在这个示例中被影响的子类是 Child2) 。
这就是为什么第三个print输出是3 2 39. 下面的代码会不会报错l 。
9、ist = a, b, c, d, eprint list10:不会报错 , 而且会输出一个 , 并且不会导致一个IndexError解答:当试图访问一个超过列表索引值的成员将导致IndexError (比如访问以上列表的list10) 。
尽管如此 , 试图访问一个列表的以超出列表长度数作为开始索引的切 片将不会导致IndexError , 并且将仅仅返回一个空列表一个讨厌的小问题是它会导致出现bug , 并且这个问题是难以追踪的 , 因为它在运行时不会引发错误 , 吐血啊10. 说出下面Iist1,list2,list3的输出值def exte ndList(val, list=):list.appe nd(val)re 。
10、turn listlist1 = exte ndList(10)list2 = exte ndList(123,)list3 = exte ndList(a)prin t list1 = %s % listlprin t list2 = %s % list2prin t list3 = %s % list3listl = 10, alist2 = 123 list3 = 10, a许多人会错误的认为listl应该等于10以及Iist3应该等于a 。
认为list 的参数会在extendList每次被调用的时候会被设置成它的默认值 。
尽管如此 , 实际发生的事情是 , 新的默认列表仅仅只在函数被定义时创建一次 。
11、 。
随后当extendList没有被指定的列表参数调用的时候 , 其使用的是同一个列表 。
这就是为什么当函数被定义的时候 , 表达式是用默认参数被计算 , 而不是它被调用的时候 。
因此 , listl和Iist3是操作的相同的列表 。
而Iist2是操作的它创建的独立的列表 (通过传递它自己的空列表作为list参数的值)所以这一点一定要切记切记.下面我们把list置为None就可以避免一些麻烦了11. 写出你认为最Pythonic的代码Pythonic编程风格是Python的一种追求的风格 , 精髓就是追求直观 , 简洁而容 易读.下面是一些比较好的例子1) .交互变量非 Pythonictemp = aa = bb = t 。
12、emppytho nic:a,b=b,a2) .判断其值真假name = Tim langs = AS3, Lua, C info = name: Tim, sex: Male, age:23 非 Pythonic if n ame != ” and len (la ngs) 0 and info != : prin t(All True!)pytho nic:if n ame and langs and info:prin t(All True!)3) .列表推导式x for x in ran ge(1,100) if x%2=04) .zip创建键值对keys = Name, Sex, Agevalues = Jack, Male, 23dict(zip(keys,values 。

稿源:(未知)
【傻大方】网址:/a/2021/0816/0023747105.html
标题:Python|Python基本面试题深入解答