NCF参数化建筑论坛

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

作者: 月之眼    时间: 2019-5-17 11:06
标题: 【GhPython】Python如何使用“委托”和lambda表达式
本帖最后由 月之眼 于 2019-5-17 11:39 编辑

函数作为参数传入函数

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

[attach]51657[/attach]

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

[attach]51658[/attach]

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

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



lambda表达式

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

[attach]51659[/attach]

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

[attach]51660[/attach]

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

[attach]51666[/attach]



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

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

[attach]51662[/attach]
求列表中的偶数项

[attach]51663[/attach]
求列表中小于某个值的项

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

[attach]51664[/attach]

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

[attach]51665[/attach]



作者: doropio    时间: 2019-5-19 19:07
月神nb 自从学了python最了解的还是爬虫了hhh 期待案例
作者: 月之眼    时间: 2019-5-20 10:45
doropio 发表于 2019-5-19 19:07
月神nb 自从学了python最了解的还是爬虫了hhh 期待案例

建筑的爬虫案例比较少,网上也很多爬虫案例呀
作者: fol    时间: 2019-5-20 11:20
写写月神分享!!!!!!!!!!
作者: 自我催眠术师    时间: 2019-7-8 15:52
谢谢月神分享




欢迎光临 NCF参数化建筑论坛 (http://www.ncf-china.com/) Powered by Discuz! X3.2