NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 997|回复: 4

[个人作品] 【GhPython】Python如何使用“委托”和lambda表达式

[复制链接]
发表于 2019-5-17 11:06:09 | 显示全部楼层 |阅读模式
本帖最后由 月之眼 于 2019-5-17 11:39 编辑

函数作为参数传入函数

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

4.jpg

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

5.jpg

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

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



lambda表达式

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

6.jpg

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

7.jpg

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

11.jpg



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

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

2.jpg
求列表中的偶数项

3.jpg
求列表中小于某个值的项

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

1.png

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

10.jpg


评分

参与人数 2强度 +4 照度 +10 收起 理由
Rrou + 2 + 10 感谢分享!
奇奇狗 + 2 感谢分享!

查看全部评分

发表于 2019-5-19 19:07:28 | 显示全部楼层
月神nb 自从学了python最了解的还是爬虫了hhh 期待案例

点评

建筑的爬虫案例比较少,网上也很多爬虫案例呀  详情 回复 发表于 2019-5-20 10:45
 楼主| 发表于 2019-5-20 10:45:47 | 显示全部楼层
doropio 发表于 2019-5-19 19:07
月神nb 自从学了python最了解的还是爬虫了hhh 期待案例

建筑的爬虫案例比较少,网上也很多爬虫案例呀
发表于 2019-5-20 11:20:52 | 显示全部楼层
写写月神分享!!!!!!!!!!
发表于 2019-7-8 15:52:09 | 显示全部楼层
谢谢月神分享

小黑屋|手机版|NCF参数化建筑论坛 ( 辽ICP备12011358号-1 )    辽公网安备 21020302000097号

GMT+8, 2019-10-18 12:44 , Processed in 0.296856 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表