当前位置:首页 » 《我的小黑屋》 » 正文

【面试宝典】深入Python高级:直戳痛点的题目演示(下)

11 人参与  2024年10月31日 11:22  分类 : 《我的小黑屋》  评论

点击全文阅读


 b4945e4752aa467fb99c337db7f00bd5.jpeg

目录

? Python下多线程的限制以及多进程中传递参数的⽅式

? Python是如何进⾏内存管理的?

? Python⾥⾯如何拷⻉⼀个对象?

? Python⾥⾯search()和match()的区别?

? lambda表达式格式以及应⽤场景?

? *args和**kwarg作⽤是什么?

? is和==的区别是什么?

? 简述Python的深浅拷⻉以及应⽤场景?

? Python垃圾回收机制?

? 解释 Python 中的三元表达式

? Python的可变类型和不可变类型?

4d00e7c5867f4f6ea62d3d2b960c6cb9.gif

? Python下多线程的限制以及多进程中传递参数的⽅式

 

python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任⼀时间只能有⼀个线程 使⽤解释器,跟单cpu跑多个程序⼀个意思,⼤家都是轮着⽤的,这叫“并发”,不是“并⾏”。多进程间共享数据,可以使⽤ multiprocessing.Value 和 multiprocessing.Array  

? Python是如何进⾏内存管理的?

Python引⽤了⼀个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),⽤于管理对⼩块内存的申请和释放。   内存池(memory pool)的概念:   当创建⼤量消耗⼩内存的对象时,频繁调⽤new/malloc会导致⼤量的内存碎⽚,致使效率降低。内存池的概念就是预先在内存中申请⼀定数量的,⼤⼩相等 的内存块留作备⽤,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎⽚,提升效率。内存池的实现⽅式有很多,性能和适⽤范围也不⼀样。   python中的内存管理机制——Pymalloc:   python中的内存管理机制都有两套实现,⼀套是针对⼩对象,就是⼤⼩⼩于256bits时,pymalloc会在内 存池中申请内存空间;当⼤于256bits,则会直接执⾏new/malloc的⾏为来申请内存空间。关于释放内存⽅⾯,当⼀个对象的引⽤计数变为0时,python就会调⽤它的析构函数。在析构时,也采⽤了内存池机制,从内存池来的内存会被归还到内存池中,以避免频繁地释放动作。

? Python⾥⾯如何拷⻉⼀个对象?

标准库中的copy模块提供了两个⽅法来实现拷⻉.⼀个⽅法是copy,它返回和参数包含内容⼀样的对象, 使⽤deepcopy⽅法,对象中的属性也被复制

? Python⾥⾯search()和match()的区别?

match()函数只检测re是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说 match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。

? lambda表达式格式以及应⽤场景?

lambda函数就是可以接受任意多个参数(包括可选参数)并且返回单个表达式值得函数。语法:lambda [arg1 [,arg2,.....argn]]:expression
def calc(x,y): return x*y# 将上述⼀般函数改写为匿名函数:lambda x,y:x*y
应⽤: lambda函数⽐较轻便,即⽤即仍,适合完成只在⼀处使⽤的简单功能。匿名函数,⼀般⽤来给filter,map这样的函数式编程服务作为回调函数,传递给某些应⽤,⽐如消息处理。  

? *args和**kwarg作⽤是什么?

*args代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。**kwargs代表的关键字参数,允许你使⽤没有事先定义的参数名。位置参数⼀定要放在关键字参数的前⾯。作⽤:使⽤*args和**kwargs可以⾮常⽅便的定义函数,同时可以加强扩展性,以便⽇后的代码维护。

? is和==的区别是什么?

==是python标准操作符中的⽐较操作符,⽤来⽐较判断两个对象的value(值)是否相等;is也被叫做同⼀性运算符,这个运算符⽐较判断的是对象间的唯⼀身份标识,也就是id是否相同。

? 简述Python的深浅拷⻉以及应⽤场景?

导⼊模块:import copy浅拷⻉:copy.copy深拷⻉:copy.deepcopy浅拷⻉指仅仅拷⻉数据集合的第⼀层数据,深拷⻉指拷⻉数据集合的所有层。<br>   所以对于只有⼀层的数据集合来说深浅拷⻉的意义是⼀样的,⽐如字符串,数字,还有仅仅⼀层的字典、列表、元祖等. 应用: 浅拷⻉在拷⻉⼤量数据且不需要改变内部元素的值的时候,能⼤量的减少内存的使⽤;深拷⻉在拷⻉⼤量数据的时候,需要在前后内部元素的内容进⾏改变的时候,可以修改拷⻉出来的模板。

? Python垃圾回收机制?

回收计数引⽤为0的对象,释放其占⽤空间循环垃圾回收器。释放循环引⽤对象

? 解释 Python 中的三元表达式

与 C++不同, 在 Python 中我们不需要使⽤符号,⽽是使⽤如下语法: [on true] if [expression]else [on false]如果 [expression] 为真, 则 [on true] 部分被执⾏。如果表示为假则 [on false] 部分被执⾏

? Python的可变类型和不可变类型?

不可变类型:

整数(int)浮点数(float)元组(tuple)字符串(str)布尔值(bool)

可变类型:

列表(list)字典(dict)集合(set)

36d73dc053d54d4f8b8dd9cc98596e03.gif

9a7fb1abf3214958a448845f203cc123.jpeg

?若能为您的学习之旅添一丝光亮,不胜荣幸?

?期待您的宝贵意见,让我们共同进步共同成长?

 


点击全文阅读


本文链接:http://zhangshiyu.com/post/180376.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1