转载:大厂5G python自动化测试面试必会 | 匿名函数lambda & 递归函数 & 函数属性和注解 & 函数式编程工具
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转载:大厂5G python自动化测试面试必会 | 匿名函数lambda & 递归函数 & 函数属性和注解 & 函数式编程工具相关的知识,希望对你有一定的参考价值。
1、匿名函数lambda的作用是什么?
参考:《Python学习手册(第四版)》
答:
就像def一样,这个表达式创建了一个之后能够调用的函数,但是它返回了一个函数而不是将这个函数赋值给一个变量名。这也就是lambda有时叫做匿名(也就是没有函数名)的函数的原因。实际上,它们常常以一种行内进行函数定义的形式使用,或者用作推迟执行一些代码。
2、匿名函数lambda与def的区别有哪些?
参考:《Python学习手册(第四版)》
答:
lambda是一个表达式,而不是一个语句。因为这一点,lambda能够出现在Python语法不允许def出现的地方——例如,在一个列表常量中或者函数调用的参数中。此外,作为一个表达式,lambda返回了一个值(一个新的函数),可以选择性地赋值给一个变量名。相反,def语句总是得在头部将一个新的函数赋值给一个变量名,而不是将这个函数作为结果返回。
lambda的主体是一个单个的表达式,而不是一个代码块。这个lambda的主体简单得就好像放在def主体的return语句中的代码一样。简单地将结果写成一个顺畅的表达式,而不是明确的返回。因为它仅限于表达式,lambda通常要比def功能要小:你仅能够在lambda主体中封装有限的逻辑进去,连if这样的语句都不能够使用。这是有意设计的——它限制了程序的嵌套:lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。
3、匿名函数lambda应用场景有哪些?
参考:《Python学习手册(第四版)》
答:
通常来说,lambda起到了一种函数速写的作用,允许在使用的代码内嵌入一个函数的定义。它们完全是可选的(你总是能够使用def来替代它们),但是在你仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。
lambda通常用来编写跳转表(jump table),也就是行为的列表或字典,能够按照需要执行相应的动作。
当需要把小段的可执行代码编写进def语句从语法上不能编写进的地方时,lambda表达式作为def的一种速写来说是最为有用的。
4、lambda主体中的代码遵循什么样的作用域查找法则?
参考:《Python学习手册(第四版)》
答:
lambda表达式引入的一个本地作用域更像一个嵌套的def语句,将会自动从上层函数中、模块中以及内置作用域中(通过LEGB法则)查找变量名。
5、回调处理器中lambda如何产生其作用?
参考:《Python学习手册(第四版)》
答:
回调处理器常常在一个注册调用(registrationcall)的参数列表中编写成单行的lambda表达式,而不是使用在文件其他地方的一个def来定义,之后引用那个变量名。
6、lambda的主体是否可以是某条语句?
参考:《Python学习手册(第四版)》
答:
lambda的主体必须是单个表达式(而不是一些语句),因此我们仅能将有限的逻辑封装到一个lambda中。
7、什么是递归函数?
参考:《Python学习手册(第四版)》
答:
递归函数即直接或间接地调用自身以进行循环的函数。它允许程序遍历拥有任意的、不可预知的形状的结构。递归甚至是简单循环和迭代的替换,尽管它不一定是最简单的或最高效的一种。
8、在Python3.0中,如何能够给函数对象附加注解信息—与函数的参数和结果相关的任意的用户定义的数据?
参考:《Python学习手册(第四版)》
答:
Python为声明注解提供了特殊的语法,但是,它自身不做任何事情;注解完全是可选的,并且,出现的时候只是直接附加到函数对象的__annotations__属性以供其他用户使用。
9、调用一个注解过的函数,当注解出现的时候python会做出什么样的动作?
参考:《Python学习手册(第四版)》
答:
Python将它们收集到字典中并且将它们附加给函数对象自身。参数名变成键,如果编写了返回值注解的话,它存储在键"return"下,而注解键的值则赋给了注解表达式的结果。
10、映射函数map与列表解析有什么不同?
参考:《Python学习手册(第四版)》
答:
map对每一个元素都应用了函数调用而不是任意的表达式。因为这点限制,从某种意义上来说,它成为了不太通用的工具。尽管如此,在某些情况下,目前map比列表解析运行起来更快(也就是说,当映射一个内置函数时),并且它所编写的代码也较少。
11、什么是函数式编程?
参考:《Python学习手册(第四版)》
答:
在Python内置函数中,map函数是用来进行函数式编程的这类工具中最简单的内置函数代表:函数式编程的意思就是对序列应用一些函数的工具。例如,基于某一测试函数过滤出一些元素(filter),以及对每对元素都应用函数并运行到最后结果(reduce)。由于range和filter都返回可迭代对象,在Python 3.0中,它们需要list调用来显示其所有结果。
12、编写函数的通用设计规则是什么?
参考:《Python学习手册(第四版)》
答:
函数通常应该较小,尽可能自包含,拥有单一的、统一的用途,并且与输入参数和返回值等其他部分通信。如果期待修改的话,它们可以使用可变的参数来与结果通信,并且一些类型的程序暗含其他的通信机制。
13、比较和对比map、filter和reduce。
参考:《Python学习手册(第四版)》
答:
这3个内置函数都对一个序列(可迭代)对象以及集合结果中的各项应用另一个函数。map把每一项传递给函数并收集结果,filter收集那些函数返回一个True值的项,并且reduce通过对一个累加器和后续项应用函数来计算一个单个的值。和其他两个函数不同,reduce在Python 3.0的functools模块中可用,而不是在内置作用域中可用。
14、什么是函数注解,如何使用它们?
参考:《Python学习手册(第四版)》
答:
函数注解在Python 3.0及其以后的版本中可用,并且是函数的参数及其结果的语法上的修饰,它会收集到分配给函数的__annotations__属性的一个字典中。Python在这些注解上没有放置语义含义,而是直接将其包装,以供其他工具潜在地使用。
15、使用lambda时都要注意哪些方面?
参考:《Python学习手册(第四版)》
答:
lambda允许“内联”小单元可执行代码,推迟其执行,并且以默认参数和封闭作用域变量的形式为其提供状态。使用lambda不是必需的,我们总可以编写一条def来替代它,并且用名称来引用该函数。lambda很方便,以嵌套小段的推迟的代码,这些代码不可能在程序的某处用到。它们通常出现在GUI这样的基于回调的程序中,并且它们与map和filter这些期待一个处理函数的函数工具密切相关。
————————————————
版权声明:本文为CSDN博主「yulanxuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41701820/article/details/121289885
以上是关于转载:大厂5G python自动化测试面试必会 | 匿名函数lambda & 递归函数 & 函数属性和注解 & 函数式编程工具的主要内容,如果未能解决你的问题,请参考以下文章
转载:大厂5G python自动化测试面试必会 | 对象与面向对象
转载:大厂5G python自动化测试面试必会 | 迭代器与解析篇
转载:大厂5G python自动化测试面试必会 | 网络编程篇
转载:大厂5G python自动化测试面试必会 | 匿名函数lambda & 递归函数 & 函数属性和注解 & 函数式编程工具