Rhino3D犀牛中文网

标题: 【GhPython】Python如何使用“委托”和lambda表达式 [打印本页]

作者: 筑梦NARUTO    时间: 2019-5-17 11:32
标题: 【GhPython】Python如何使用“委托”和lambda表达式
本帖最后由 筑梦NARUTO 于 2019-5-17 11:36 编辑

函数作为参数传入函数

在python中函数是能作为参数输入函数的。这个有点类似于C#中的委托,将一个函数封装到一个委托对象里,再将这个委托对象传入函数进行调用。这里写一个简单的C#案例,大概理解“委托”的概念就行。

(, 下载次数: 112)

下面我们来看看python如何实现上面的效果。

(, 下载次数: 115)

这里我们可以看到调用Test(list,func)函数时候,我们将一个函数传入了Test函数的第二个参数,第二个参数func直接在函数内调用了。就和C#中的“委托”调用一样。

利用委托写代码可以将代码封装的更好,不用频繁修改函数内部的代码。让代码更加的灵活。我们再看应用之前我们先看看匿名方法lambda表达式。



lambda表达式

有时候我们在定义一次性函数的时候(只调用一次的函数),我们就可以采用匿名函数来处理。我们将上面的C#代码进行简化,效果如下(不能理解也没事,看看就行)

(, 下载次数: 126)

我们再将上面的python代码进行简化。我们用lambda关键字声明了一个参数为num的匿名函数,并将这个函数赋值给了F变量名。

(, 下载次数: 125)

我们直接在调用Test函数的时候定义lambda表达式,这样看起来更像C#的lambda表达式。

(, 下载次数: 138)



综合应用
合应用
函数有个很重要的概念就是对代码的封装,减少代码的重复使用。

这里我举个简单的例子:比如我们要写一个函数把列表中的偶数项选择出来,写另一个函数把列表中小于某个值的项选取出来。

(, 下载次数: 120)
求列表中的偶数项

(, 下载次数: 118)
求列表中小于某个值的项

然后我们利用上面学习的“委托”和lambda表达式将上面的代码合并成一个,这样我们只需要调用的时候更改输入的条件就行了,Test函数内的代码是不需要改动的。


(, 下载次数: 112)
最后再讲一下利用列表解析将函数进行简化,关于列表解析可以百度一下,或者看看大水牛公众号以前的一篇教程。

(, 下载次数: 116)







欢迎光临 Rhino3D犀牛中文网 (https://rhino3d.asia/) Powered by Discuz! X3.3