返回介绍

编码替代方案

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

有趣的是,我们也可以使用Python的三元if/else表达式(在第12章介绍过)在这里保存某些代码资产。我们也可以针对任何可加和的类型一般化(如果我们至少假设输入中的一项的话,这将会变得较容易些,就像我们在第18章最小最大值的示例中所做的那样),并且使用Python 3.0的扩展序列赋值来使得第一个/其他的解包更简单(正如第11章所介绍的):

这些例子中的后两个由于空的列表而失败,但是考虑到支持+的任何对象类型的序列,而不只是数字:

如果你研究这3个变体,将会发现,后两者在一个单个字符串参数上也有效(例如,mysum('spam')),因为字符串是一字符的字符串的序列;第三种变体在任意可迭代对象上都有效,包括打开的输入文件,但是,其他的两种不会有效,因为它们索引;并且函数头部def mysum(first,*rest)尽管类似于第三种变体,但根本没法工作,因为它期待单个参数,而不是一个单独的可迭代对象。

别忘了,递归是可以是直接的,就像目前为止给出的例子一样;也可以是间接的,就像下面的例子一样(一个函数调用另一个函数,后者反过来调用其调用者)。直接的效果是相同的,尽管这在每个层级有两个函数调用:

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

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

发布评论

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