c# python 相互调用_【GhPython】Python如何使用“委托”和lambda表达式

【版权声明】

| 作者:月之眼

| 首发于大水牛参数化设计平台

| 如需转载请联系作者

| 如果觉得文章不错,欢迎分享 


 函数作为参数传入 

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

c7a0e71af614599c2512017ffeb4e1c4.png

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

539a43f345884e2d689f01ffc95d90b5.png

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

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


 lambda表达式 

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

ec02f1f8453213c4f46d778ff54ccfc4.png

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

6f212843b7cbcdd77f07033e97ee6def.png

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

b40d1e0fb0ddc75f7f3eedb0fe3ceef3.png


 综合应用 

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

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

2bc2b3dfcc20b90ca30b0ed1093e48f1.png

求列表中的偶数项

a0f5f2384eb77eb2aaccc7f74d586dc7.png

求列表中小于某个值的项

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

af87a197c0fc4cb39c0b0c9e4576bd5a.png

最后再讲一下利用列表解析将函数进行简化,关于列表解析可以查看这个链接:python列表解析

78c6950b2f197a0ccc0ae8947eb96682.png


往期精彩文章回顾:

  • 【Python】Gh如何选中Rhino中图层的物体

  • 【Python】如何循环标注

  • 【Processing教程6】----Minim的简单运用

  • 【Processing 教程 5】 ----PeasyCam 和 gHowl

  • 【Processing教程4】----library的简单运用

  • 【Processing 教程3】--Arry和For Loop

  • 【Processing 教程 2 】----- function

  • 【Processing 教程1】--界面和参数介绍

  • 【号外,号外】大家期待已久的Processing教程来啦

  • 【Python】一键标注封闭多重直线

  • 【Python】通过python删除指定名称的电池

  • 【分分钟建模系列20】如何路径分组

  • 【分分钟建模系列19】如何用RhinoPython实现“向日葵”开洞

  • 【分分钟建模系列18】如何用Rhino做垂直格栅

  • 【分分钟建模系列08】山寨一个教堂

  • 【分分钟建模系列07】做个扭转建筑

  • 【分分钟建模系列】SoftMove命令的简单应用

  • 【分分钟建模系列】手把手教你做旋转楼梯

  • 【分分钟建模系列】手把手教你做表皮

  • 【分分钟建模系列05】手把手教你做编织

  • 【分分钟建模系列06】手把手教你做个凳子

  • 【分分钟建模系列09】如何用犀牛手工做灰阶度干扰

  • 【分分钟建模10】MAD中国国家美术馆

  • 【分分钟建模教程系列11】Big的W大楼

  • 【分分钟建模教程系列12】如何做一个漂亮的楼梯

  • 【分分钟建模教程系列13】如何做曲面干扰

  • 【分分钟建模系列14】如何快速打断相交的曲线

  • 【分分钟建模系列15】如何用Grasshopper建一座桥梁

  • 【分分钟建模系列16】茶几建模

  • 【分分钟建模系列17】BIG蛇形画廊的建模案例

  • 【Bubalus_RH for Rhino6】选择“选中物体”所在的图层

  • 【Grasshopper】Anemone插件的应用


大水牛参数化设计是一个传播分享建筑数字化设计与数字化建造资讯的平台

并且会不断连载原创或转载有价值的参数化软件教程

(Rhino、Grasshopper、Python、Revit、Processing等等)

是一个视野与技术并重的数字化传播平台

我们的目标是把这个平台创造成一个拥有良好氛围的学习平台

我们将带头冲锋;我们的立场非常坚定

我们的狂怒你驾驭不住;黎明就在眼前

欢迎你们加入我们的战队

记住我们不是一个人在战斗

1f0292a9db1c2df974a824176fad9b2e.png

点击关注微信公共号,获取更多精彩内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值