常见的Python面试题+详细解答
来源:互联网 发布:安知玉如意百度云 编辑:程序博客网 时间:2024/05/16 03:55
常见面试题整理–Python概念篇
(一),这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?
答:如果我们不确定往一个函数中传入多少参数,或者我们希望以元组(tuple)或者列表(list)的形式传参数的时候,我们可以使用*args(单星号).如果我们不知道往函数中传递多少个关键词参数或者想传入字典的值作为关键词参数的时候我们可以使用**kwargs(双星号),args,kwargs两个标识符是约定俗成的用法。
另一种答法:当函数的参数前面有一个星号*号的时候表示这是一个可变得位置参数,两个星号**表示这是一个可变的关键词参数。星号*把序列或者集合解包(uppack)成位置参数,两个星号**把字典解包成关键词参数。
代码辅助理解:
tempList = [1,2,3]tempTuple = (2,3,4)tempDict = {'s':3,'m':4,'c':5}def testFunc(*args,**kwargs): print args,kwargstestFunc()#() {}testFunc(*tempList)#(1,2,3) {}testFunc(*tempTuple)#(2,3,4) {}testFunc(*tempDict)#('s','m','c') {}testFunc(**tempDict)#() {'s':3,'m':4,'c':5}testFunc(*tempList,**tempDict)#(1,2,3) {'s':3,'m':4,'c':5}testFunc(0)#(0,) {}testFunc(0,*tempList)#(0,1,2,3) {}testFunc(0,**tempDict)#(0,) {'s':3,'m':4,'c':5}testFunc(0,*tempList,tempName = 'bye',**tempDict)#(0,1,2,3) {'s':3,'m':4,'c':5,'tempName':'bye'}
(二),谈一谈Python的装饰器(decorator)
装饰器本质上是一个Python函数,它可以让其它函数在不做任何变动的情况下增加额外功能,装饰器的返回值也是一个函数对象。他经常用于有切面需求的场景。比如:插入日志,性能测试,事务处理,缓存,权限校验等。有了装饰器我们就可以抽离出大量的与函数功能无关的雷同代码进行重用。
有关于具体的装饰器的用法看这里:装饰器-廖雪峰的官方网站
(三),简要概述Python的垃圾回收机制(garbage collection)
Python中的垃圾回收机制是以引用计数为主,标记-清除和分代收集为辅。
- 引用计数:Python在内存中存储每个对象的引用计数,如果计数变为0,该对象就会消失,分配给该对象的内存就会释放出来。
- 标记-清除:一些容器对象,比如list,dict,tuple,instance等可能会出现引用循环,对于这些循环,垃圾回收器会定时回收这些循环(对象之间通过引用(指针)连在一起,构成一个有向图,对象构成这个有向图的结点,而引用关系构成这个有向图的边).
- 分代收集:Python把内存根据对象存活时间划分为三代,对象创建之后,垃圾回收器会分配它们所属的代。每个对象都会被分配一个代,而被分配更年轻的代是被优先处理的,因此越晚创建的对象越容易被回收。
未完待续!
0 0
- 常见的Python面试题+详细解答
- 常见的面试笔试题 及其解答
- Android常见面试题解答
- 常见的Python面试题
- JAVA WEB面试中最常见的面试题解答
- 数据分析师常见的10道面试题解答
- 常见python面试题
- Python常见面试题
- python常见面试题
- python常见面试题
- 《常见Android面试题汇总及详细解答》-------- 持续更新中
- C++最常见面试题解答
- 华为Python面试题,排列生成的解法,最优解答
- 百度面试题的解答
- 一些面试题的解答
- 一道面试题的解答
- 常见的c#面试题总结(详细)
- python 常见面试题整理
- ELK用户管理
- Codeforces 742A Arpa’s hard exam and Mehrdad’s naive cheat 打表+水题
- Redis数据类型-String
- 大数 斐波那契 与阶乘
- tableView内的View悬停在导航栏的效果
- 常见的Python面试题+详细解答
- Python爬虫爬取Html中的Url常用知识
- spring mvc <mvc:annotation-driven/> 和<context:component-scan base-package=""/>解释
- Redis数据类型-List
- 修复miniblink无法显示某个网站的某个图标的bug
- Codeforces 742B B. Arpa’s obvious problem and Mehrdad’s terrible solution
- android入门小知识
- Tablayout使用小结
- 第十二章-无线传感网接入Internet