欢迎回来｡
让我们来谈谈我非常非常喜欢的东西, 它叫做Lambda表达式｡
Lambda实际上是一个计算机科学术语, 它与函数式编程的思想是一致的｡
你看, Python中的lambda表达式是一次性的匿名函数, 你不需要多次使用｡
那是什么意思？
lambda表达式非常非常有用, 当你用它来处理那些只使用一次的函数时.
还记得我们说过函数是很有用的, 因为我们可以定义它们, 然后反复使用这些函数,
从而保存复制和粘贴代码｡
lambda函数适用于那些我们有一个函数, 但只需要使用一次的场合｡
第二部分是它们是匿名函数｡
那是因为我们只使用它们一次｡
我们不需要为它们命名, 因为我的意思是, 我们真的不需要将它们存储在计算机上的任何地方｡
我只想用一次｡
只要运行它, 然后我完成它｡
把它扔了吧｡
那么lambda函数是什么样子的呢？
lambda函数看起来像这样｡
我们在Python中称lambda｡
让我在这里加一点空间, 这样我们就能看到了｡
我们说Lambda, 你可以看到它用蓝色突出显示｡
然后我会输入这个函数要得到的参数, 然后是冒号, 再然后是函数.
和参数｡
或者, 它不是功能, 而是我们所做的某种操作｡
让我们来说说我们想要采取的行动｡
在参数上｡
好了, 这看起来还是很混乱, 让我们试着在我们创建的函数中实现它｡
比如说, 乘2是其中一个我们只会用到一次的函数.
我只想乘以2｡
这是我的清单, 然后我完成它｡
我不需要把它保存到内存中｡
这只是一段额外的代码｡
我不需要这个｡
我们如何才能做到这一点？
好吧, 假设我们有一个map函数, 我们把它转换成一个列表｡
现在我只想把它们最小化｡
所以我们只关注乘二｡
这里我们再回到乘2的问题上｡
还记得我们以前是怎么过的吗｡
我的列表, 我们不需要第三个参数｡
现在有了lambda函数, 我可以说, 嘿, 我不需要创建一个全新的函数, 我只需要使用一次｡
我们把它全部去掉吧｡
而不是乘2, 我会说lambda｡
这里我要给予它一个参数｡
我将收到什么参数？
好吧, 我会收到我清单上的一个项目｡
然后在这里, 我们要对我的清单做什么？
嗯, 我想把它乘以2｡
好吧, 我会的
这能行吗？
我们来给予试吧｡
我要跑了｡
哇哦｡
你看到了吗？
我甚至没有使用乘以2｡
事实上, 我可以直接删除它｡
如果我单击“运行”, 一切仍然正常｡
现在就去
为什么会这样呢？
请记住, Lambda表达式是一次性匿名函数｡
此函数没有附加名称｡
这就是函数｡
你不需要跑超过一次｡
所以一旦解释器运行了这行代码, 它就不会记住这一点｡
它只是忘记了它｡
但它为我们执行动作｡
在我们的例子中, 我们说, 嘿, 我想创建一个lambda表达式｡
我要从我的清单上取一个项目｡
然后我把它乘以2, 这个函数会自动返回.
我们做的顺序是lambda｡
我们给予它婴儿车, 科林, 然后我们想采取的行动｡
在我们的情况下, 这将是婴儿车｡
以及我们想做的任何行动｡
喜欢｡
所以在我们的例子中, item乘以2, 这个会自动返回｡
这很酷吧？
这是Python的一个非常好的特性, 可以让你的代码非常漂亮和干净, 而不是被所有这些函数弄得乱七八糟｡
其他语言可能没有lambda, 但它们有时被称为匿名函数｡
我们已经讨论过为什么他们是匿名的｡
它们就像普通函数一样, 甚至行为也像普通函数一样｡
但我们只用一次, 而且没有名字｡
但你可以看到它让事情变得更干净了｡
如果我们现在用lambda函数来做filter呢？
如果你想的话你可以暂停视频自己试试｡
但应该很容易吧？
如果我做过滤器｡
我能做到, 拉姆达｡
项目, 然后项目｡
我们就复制这个｡
所以我们要对这个项目采取的行动是这样的｡
如果我运行它｡
再来一次｡
这很管用｡
那多好啊？
也不再需要此功能｡
非常非常好｡
那减少呢？
我们能用reduce和lambda吗？
当然可以｡
为什么不呢？
比如说这里我们会说减少｡
我们将从这里删除列表, 因为我们只生成一个值｡
我会说Lambda｡
项记减接受到参数累加器然后项｡
所以我可以给予它两个参数, 然后说, 我们要做什么？
好了, 我只想把累加器跟项加起来｡
如果我像这样在这里列出我的列表, 然后单击“运行”｡
你看
那也行｡
这很酷吧？
同样, 我们不再需要累加器, 现在我们只需要一行函数, 我可以运行它,
立即减少列表｡
非常, 非常酷｡
我们会对lambdas做更多的探讨, 特别是在课程的理解部分｡
因此, 如果您还没有完全掌握这些功能, 也不用担心, 我们将在本课程的后面部分介绍更多使用案例, 以及它们为什么有用｡
但是我非常非常喜欢lambda表达式, 它们让你的代码非常非常小｡
但是, 它们确实会使代码的可读性降低一些｡
因此, 这是一种权衡, 你可以很聪明地使用lambda表达式, 但让你的代码让别人很困惑｡
所以你要小心点｡
现在, 我们结束了｡
下一个视频里见｡
再见, 再见, 再见