【版权声明】
| 作者:月之眼
| 首发于大水牛参数化设计平台
| 如需转载请联系作者
| 如果觉得文章不错,欢迎分享
函数作为参数传入
在python中函数是能作为参数输入函数的。这个有点类似于C#中的委托,将一个函数封装到一个委托对象里,再将这个委托对象传入函数进行调用。这里写一个简单的C#案例,大概理解“委托”的概念就行。
下面我们来看看python如何实现上面的效果。
这里我们可以看到调用Test(list,func)函数时候,我们将一个函数传入了Test函数的第二个参数,第二个参数func直接在函数内调用了。就和C#中的“委托”调用一样。
利用委托写代码可以将代码封装的更好,不用频繁修改函数内部的代码。让代码更加的灵活。我们再看应用之前我们先看看匿名方法lambda表达式。
lambda表达式
有时候我们在定义一次性函数的时候(只调用一次的函数),我们就可以采用匿名函数来处理。我们将上面的C#代码进行简化,效果如下(不能理解也没事,看看就行)
我们再将上面的python代码进行简化。我们用lambda关键字声明了一个参数为num的匿名函数,并将这个函数赋值给了F变量名。
我们直接在调用Test函数的时候定义lambda表达式,这样看起来更像C#的lambda表达式。
综合应用
函数有个很重要的概念就是对代码的封装,减少代码的重复使用。
这里我举个简单的例子:比如我们要写一个函数把列表中的偶数项选择出来,写另一个函数把列表中小于某个值的项选取出来。
求列表中的偶数项
求列表中小于某个值的项
然后我们利用上面学习的“委托”和lambda表达式将上面的代码合并成一个,这样我们只需要调用的时候更改输入的条件就行了,Test函数内的代码是不需要改动的。
最后再讲一下利用列表解析将函数进行简化,关于列表解析可以查看这个链接:python列表解析
往期精彩文章回顾:
【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等等)
是一个视野与技术并重的数字化传播平台
我们的目标是把这个平台创造成一个拥有良好氛围的学习平台
我们将带头冲锋;我们的立场非常坚定
我们的狂怒你驾驭不住;黎明就在眼前
欢迎你们加入我们的战队
记住我们不是一个人在战斗
点击关注微信公共号,获取更多精彩内容