返回介绍

习题解答

发布于 2024-01-29 22:24:16 字数 862 浏览 0 评论 0 收藏 0

1.lambda和def都会创建函数对象,以便稍后调用。不过,因为lambda是表达式,可以嵌入函数定义中def语法上无法出现的地方。lambda的使用,总是可以用def来替代,并且通过变量名来引用函数。从语法上来讲,lambda只允许单个的返回值表达式,因为它不支持语句代码块,因此,不适用于较大的函数。

2.lambda允许“内联”小单元可执行代码,推迟其执行,并且以默认参数和封闭作用域变量的形式为其提供状态。使用lambda不是必需的,我们总可以编写一条def来替代它,并且用名称来引用该函数。lambda很方便,以嵌套小段的推迟的代码,这些代码不可能在程序的某处用到。它们通常出现在GUI这样的基于回调的程序中,并且它们与map和filter这些期待一个处理函数的函数工具密切相关。

3.这3个内置函数都对一个序列(可迭代)对象以及集合结果中的各项应用另一个函数。map把每一项传递给函数并收集结果,filter收集那些函数返回一个True值的项,并且reduce通过对一个累加器和后续项应用函数来计算一个单个的值。和其他两个函数不同,reduce在Python 3.0的functools模块中可用,而不是在内置作用域中可用。

4.函数注解在Python 3.0及其以后的版本中可用,并且是函数的参数及其结果的语法上的修饰,它会收集到分配给函数的__annotations__属性的一个字典中。Python在这些注解上没有放置语义含义,而是直接将其包装,以供其他工具潜在地使用。

5.递归函数调用本身可以直接地或间接地进行,从而实现循环。它们可以用来遍历任意形状的结构,但是,也可以用来进行一般性迭代(尽管后一种角色用循环语句来编写往往更简单和高效)。

6.函数通常应该较小,尽可能自包含,拥有单一的、统一的用途,并且与输入参数和返回值等其他部分通信。如果期待修改的话,它们可以使用可变的参数来与结果通信,并且一些类型的程序暗含其他的通信机制。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文